【问题标题】:EditText returns enhanced ISO-8859-1 instead UTF-8 encoding for german umlauts?EditText 返回增强的 ISO-8859-1 而不是德语变音符号的 UTF-8 编码?
【发布时间】:2011-12-08 22:03:25
【问题描述】:

我不仅仅是困惑。我确实有一些 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 字符而退出。

问候, 奥利弗

【问题讨论】:

    标签: android utf-8 android-edittext


    【解决方案1】:

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

    您需要将您的字符串转换为 UTF-8 以便按原样发送(直接发送,或通过您可能使用的任何 JSON 库)。这可以通过在您的字符串上调用 getBytes("UTF8") 来获得一个字节数组,其中字符串采用所需的编码。

    【讨论】:

    • Argh,这不是我第一次将这些 utf/unicode 混合在一起......感谢您为我指明了正确的方向。实际上,我唯一需要做的就是将 StringEntity(postdata) 更改为 StringEntity(postdata,HTTP.UTF_8)
    猜你喜欢
    • 2015-04-20
    • 1970-01-01
    • 2019-06-18
    • 2011-09-23
    • 1970-01-01
    • 2016-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多