EditText为德语变音符号返回增强的ISO-8859-1而不是UTF-8编码?

时间:2011-10-16 22:16:50

标签: android utf-8 android-edittext

我不仅仅是困惑。我有一些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字符而被拯救出来。

此致 奥利弗

1 个答案:

答案 0 :(得分:10)

Java(以及Android)字符串are not UTF-8, but UTF-16。显示的字节是Unicode代码点。

您需要将字符串转换为UTF-8才能直接将其发送(直接或通过您可能使用的任何JSON库)。这可以通过调用字符串上的getBytes("UTF8") 来获得带有所需编码字符串的字节数组。