相关文章推荐
温柔的小蝌蚪  ·  CEdit 类 | Microsoft Learn·  1 月前    · 
私奔的棒棒糖  ·  java api接口鉴权 ...·  1 年前    · 
越狱的牛肉面  ·  Alternative to ...·  1 年前    · 

sim卡姓名长度最大为14字节可以输入11个相同汉字

【描述】

SIM卡记录名字的最大长度是14 ,可以输入14个字符,输入中文是可以输入6个,但是如果是相同的汉字 ,可以输入11个。如,可以保存"天天天天天天天天天天天" ,但只能保存"天天天天天气”

【方案】


sim联系人的中文编码采用UCS2 0x81编码. 编码格式为,14个字节,前两个字节表示编码方式和长度.一个汉字占用两个字节. 当输入全部相同的汉字时,将采用基址偏移的方式,第三个字节为基址, 后面11个字节则是通过基址偏移对应的unicode编码. 所以,当输入相同的汉字,最多可以存储11个汉字.

例如, 杜杜杜

UNICODE编码为:675C675C675C

用UCS2的81方案表示是:8103CEDCDCDC

81:为标记

03:表示整个字符串为3个字符

CE:一个字节为基址。解析的方法为:将基址(CE)左移七位,并将最高位置为0,最低位再补一个0.此时基址变为0x6700,然后再判断后面的数据字节。

DCDCDC:3个数据字节 DC, DC, DC 。如果数据字节的最高位为0,则认为此字节是一个ASCII字符。如果数据字节的最高位为1,则低7位为基址的一个偏移,实际的UCS2字符为基址加上这个偏移值。由于此处三个数据字节最高位都为1,则实际的3个字符的偏移值为:5C, 5C, 5C。实际的UCS2编码为: 0x675C 0x675C 0x675C

发布于 2016-08-18 17:57