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

Oli*_*ver 3 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字符而导致了这种行为.

此致,奥利弗

Mic*_*sen 10

Java(以及Android)字符串不是UTF-8,而是UTF-16.显示的字节是Unicode代码点.

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

  • 唉,这不是我第一次把那些utf/unicode混合起来......感谢你指点我正确的方向.实际上,我唯一要做的就是将StringEntity(postdata)更改为StringEntity(postdata,HTTP.UTF_8) (4认同)