【问题标题】:Java constant String gets corrupted in AndroidJava 常量字符串在 Android 中被损坏
【发布时间】:2015-04-08 12:46:16
【问题描述】:

我正在从用户的设备中收集数据以进行分析。我有一些代表事件名称的最终静态字符串(例如“banner_click”)。当适当的事件发生时,事件名称被存储在 sqlite 数据库中,之后我定期将它们从 DB 读取到 JsonObject 并发出 HTTP 请求以将收集的数据发送到我们的服务器,但有时我们会得到损坏的事件名称(“banner_clÄ ±ck”而不是“banner_click”,在所有这些情况下,“i”都被替换为“ı”)。这种情况很少发生,但让我很担心。所以我想知道常量字符串是如何被破坏的,我自己无法重现它。我目前唯一的猜测是这是一个特定于设备的问题。

【问题讨论】:

    标签: java android sqlite mobile mobile-devices


    【解决方案1】:

    click 中的 i 实际上是 ı 即拉丁小写字母 DOTLESS I。它的 UTF-8 是 0xc4 0xb1 并将这些字节解释为 ISO-8859-1 给出 ı

    1. 将字符修复为常规i

    2. 在处理非 ASCII 时注意字符编码。

    【讨论】:

    • 究竟应该如何将字符固定为常规 i ?我只有定义了字符串常量的类。如果有这样的问题,为什么它不会经常发生?
    • 您的代码中很可能有无点 i。
    • 你描述了最可能的情况,但我在我的代码中找不到任何点少的“i”,我什至不知道如何输入。我正在检查我的键盘的“i”,它被解释为“U+0069”,这是正常的小写“i”。
    猜你喜欢
    • 2018-06-05
    • 2015-12-11
    • 2015-05-05
    • 2013-10-19
    • 1970-01-01
    • 2018-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多