我已经观察这个问题多年了,不知道它是从哪里来的。我担心这个bug在2011年的Android新版本中仍然存在,我希望你最终能帮助我完全理解它,如果不能解决它的话。
让我们考虑一下给定的(真实)情况。A先生正在他的Xperia Arc (官方版本2.3.3)上使用来自索尼的定制SMS/MMS应用程序。先生B正在使用android短信/彩信堆栈应用程序在他的里程碑(Cyanogen 6.12,非官方2.2)。他们都使用法语的Android (如果这很重要的话)。
当A向B发送包含特殊字符的sms时,B会收到一条用空格替换这些字符的消息。但是像"é“这样的字符工作得很好。当B向A发送短信时,一切正常。当A给自己发送这条短信时,一切都很正常。
结论:这不是移动提供商的错,因为它以一种方式工作,而不是另一种方式。
所以,我一开始就猜到A的自定义应用出了问题。换成了B手机里的apk。一切都保持不变。我对应用程序进行了反编译,但没有找到sms字符串的编码位置。我得出的结论是,bug不是来自应用程序,而是来自Android编码字符串的方式……
我运行了另一个测试:我编写了一个只有标准字符的sms,大约1.5个sms中有250个字符。然后,我在sms后面加上一个"ç“。在A的手机上:柜台说它消耗了10个字符。在B的手机上:计数器说短信现在需要3条短信:字符串大小翻了一番!
结论:在A的手机上,默认字符集包括"ç“。在B的手机上,当"ç“出现时,字符集发生变化,每个字符需要两倍的原始空间。(或者我错过了什么?)
问题:为什么不同版本的Android不使用相同的默认字符集?例如,在Android上,这些默认字符集取决于rom吗?我们可以在某个地方配置/更改这些字符集(在菜单中或直接在有根的手机上)吗?有没有其他简单的方法来解决这个问题?
欢迎任何帮助、解释或经验:)