我不仅仅是困惑。我有一些EditText,它显然返回ISO-8859-1甚至混合8859-1 + UTF8字符串。
直到现在我的理解是,Android完全是UTF-8,所以这甚至都不会发生。
实施例: 在EditText中输入“wüste”。字符串到十六进制返回此字节代码: 57 fc 73 74 65,我的期望是:57 c3bc 73 74 65
输入“wüsteテスト”返回57 fc 73 74 65 20 30c6 30b9 30c8,现在甚至是扩展的8859-1和UTF-8的混合。
这是预期和想要的行为吗?我可以在某处更改吗? 我在使用JSON向服务器发送数据时意识到了这种行为,并且由于非法的UTF-8字符而被拯救出来。
此致 奥利弗
答案 0 :(得分:10)
Java(以及Android)字符串are not UTF-8, but UTF-16。显示的字节是Unicode代码点。
您需要将字符串转换为UTF-8才能直接将其发送(直接或通过您可能使用的任何JSON库)。这可以通过调用字符串上的getBytes("UTF8")
来获得带有所需编码字符串的字节数组。