java - 编码差异 UTF-8 Android 4.2.2 <=> Windows 7

标签 java android windows encoding utf-8

我遇到编码问题。相同的代码在 Android 和 Windows 上产生不同的输出。我无法修改Android应用程序,因此我需要在Windows上找到解决方案。 这是代码:

 public void test() throws UnsupportedEncodingException
{
    byte[] a = {-95, -10, -63, -74, 99, -10, 74, -56, -85, 105};
    String ab = new String(a,"UTF-8");
    System.out.println("out:"+Arrays.toString((new  StringBuilder(String.valueOf(ab))).toString().getBytes("UTF-8")));
}

输出:

out:[-17, -65, -67, -17, -65, -67, 118, 99, -17, -65, -67, 74, -56, -85, 105] (on Android)
out:[-17, -65, -67, -17, -65, -67, -17, -65, -67, -17, -65, -67, 99, -17, -65, -67, 74, -56, -85, 105] (on Windows)

Android 似乎使用“java.nio.charset.CharsetICU[UTF-8]”。有什么建议吗?

谢谢, 亚历克斯

最佳答案

这是因为 {-95, -10, -63, -74, 99, -10, 74, -56, -85, 105} 不是有效的 UTF-8 字节序列。 new String(bytes, "UTF-8") 在这种情况下不会抛出任何异常,但结果很难预测。阅读 http://en.wikipedia.org/wiki/UTF-8字节序列部分无效。

尝试使用 ISO-8859-1,它将字节转换为字符 1 : 1

关于java - 编码差异 UTF-8 Android 4.2.2 <=> Windows 7,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16240245/

相关文章:

Java XMLGregorianCalendar 正在改变时间 - 奇怪的行为

android - Ecclipse Android Sdk 中的 NullPointerException 不幸的是 myapp 已停止

android - 如何在 logcat 上启用 Surface Flinger 事件

ruby-on-rails - 命令 : rails console, 生成无法识别。错误:无法识别命令 'rails' 用法:rails COMMAND [ARGS]

java - 从 Java 中的组合框中删除所有项目

java - Tomcat SSL配置问题

java - 如何查看我的 PreparedStatement 的外观?

java - 如何计算当前方向和GPS点之间的角度

windows - 将多行批处理为一行?

windows - 无法在 cmd 中通过管道传输 cmdlet 对象