小编Rom*_*360的帖子

Android短信中的特殊字符

我已经观察了这个问题多年了,不知道它来自哪里.我担心这个错误在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,例如?我们可以在某处(在菜单中或直接在根电话上)配置/更改这些字符集吗?有另一种简单的方法来解决这个问题吗?

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

sms android mms special-characters

13
推荐指数
1
解决办法
1万
查看次数

如何修改OCaml中的一元运算符?

在OCaml中,访问二进制运算符非常容易,例如"+":

# (+);;

( + ) : int -> int -> int
Run Code Online (Sandbox Code Playgroud)

并按我的意愿修改它们:

# let (+) = (+.);;

( + ) : float -> float -> float
Run Code Online (Sandbox Code Playgroud)

在Pervasives文档中,它表示(~-)对应的是一元运算符(-),意味着~-5返回- :int = -5.

它也很容易修改(~-):

let (~-) = (~-.);;

(~-) : float -> float
Run Code Online (Sandbox Code Playgroud)

幸运的是,OCaml允许用户(-)作为别名使用(~-):

假设我们已定义

foo : int -> int -> int
Run Code Online (Sandbox Code Playgroud)

我们可以打电话

foo 1 (-1);;
Run Code Online (Sandbox Code Playgroud)

哪个方式比

foo 1 (~-1);;
Run Code Online (Sandbox Code Playgroud)

好吧,问题是,当我改变(~-)定义时,它不会影响一元运算符(-)......

let (~-) x …
Run Code Online (Sandbox Code Playgroud)

ocaml operators

3
推荐指数
1
解决办法
904
查看次数

标签 统计

android ×1

mms ×1

ocaml ×1

operators ×1

sms ×1

special-characters ×1