2015-04-08 57 views
2

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

回答

4

iclick实际上是ı即拉丁小写字母无点一,UTF-8,因为这是0xc4 0xb1和解释这些字节为ISO-8859-1给出了ı

  1. 修复该字符为常规i

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

+0

究竟应该如何解决字符是正常的我?我只是有定义的字符串常量的类。如果存在这样的问题,为什么它不会一直发生? – mdavid

+0

你很可能在你的代码中有无处不在的地方。 – laalto

+0

您描述了最可能的情况,但我在代码中找不到任何点少“我”,我不知道如何输入。我正在检查我的键盘的“我”,它被解释为“U + 0069”,这是正常点缀的小写“我”。 – mdavid