我已经观察了这个问题多年了,不知道它来自哪里.我担心这个错误在2011年的Android新版本中仍然可以观察到,我希望你能最终帮助我完全理解它,如果不能解决的话.

让我们考虑给定(真实)的情况.先生"A"正在使用索尼在其Xperia Arc(官方2.3.3)上的自定义短信/彩信应用程序.B先生在他的里程碑(Cyanogen 6.12,非正式2.2)上使用了Android短信/彩信堆栈应用程序.他们两个都使用法语Android(如果重要的话).

当A向包含特殊字符(如"ç","ê")的B发送短信时,B收到一条消息,其中这些字符被空格替换.像"é"这样的人物工作正常.当B将短信发送给A时,一切正常.当A向自己发送短信时,一切正常.

结论:这不是移动提供商的错,因为它以一种方式而不是另一种方式工作.

所以,我首先猜到了A的自定义应用程序出了问题.用B的手机上的apk替换它.一切都保持不变.我反编译了应用程序,我没有找到sms字符串编码的位置.我总结说这个bug不是来自应用程序,而是来自Android编码字符串的方式......

我跑了另一个测试:我写了一个只有标准字符的短信,类似于1.5个字符的250个字符.然后,我在短信中附加一个"ç".在A的电话上:柜台说消耗了10个字符.在B的电话上:柜台说短信现在需要3个短信:字符串大小加倍!

结论:在A的手机上,默认的字符集包括"ç".在B的手机上,当出现"ç"时,字符集会发生变化,每个角色需要两倍于原始空间.(或者我错过了什么?)

问题:为什么不同版本的Android没有使用相同的默认字符集?在Android上,这些默认字符集是否取决于rom,例如?我们可以在某处(在菜单中或直接在根电话上)配置/更改这些字符集吗?有另一种简单的方法来解决这个问题吗?

欢迎任何帮助,解释或经验:)