android为什么在SIM卡中存中文联系人,重启之后,中文联系人名字会消失?

全球全网精准引流软件SaaS平台
企业官方账号
2011-03-09 12:27:48
各位大大,
android为什么在SIM卡中存中文联系人,重启之后,中文联系人名字会消失?
但是存的号码还保留!
有遇到类似现象的吗?
谢谢了!
...全文
2288 32 打赏 收藏 转发到动态 举报
写回复
用AI写文章
32 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
所有源码见博客:
http://blog.csdn.net/jindan_jinming/article/details/6453116
book_yangbody2003 2011-07-12
  • 打赏
  • 举报
回复
同样的问题,急求答案
inclick 2011-05-24
  • 打赏
  • 举报
回复
问题解决就的话,麻烦请贴上代码啊,也方便遇到同样问题的朋友参考下!
DrSmart 2011-05-09
  • 打赏
  • 举报
回复
楼上问的是字符序列,应该解决了吧,不知道,在android 1.0时,当时还无法发送中文短信,不过都在那个telephony/gsm里的源码里能找到
Huhood 2011-04-20
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 ljp1205 的回复:]
上面的链接介绍得很清楚,在sim卡中存中文用80格式的话
用80开头,然后加编码字符。
ucs2和unicode只是字节序不同,unicode是小头在前,ucs2是大头在前。。
你转成utf16之后需要把每个编码的前后字节交换位置。

引用 6 楼 jindan_jinming 的回复:
现在发现使用byteTag = alphaTag.getBytes("utf-16be");变成的……
[/Quote]
弱弱问下,什么是小头,什么是大头啊?
zhou123shao 2011-03-24
  • 打赏
  • 举报
回复
要修改那些文件呢,能不能把修改后的代码贴出来呀,呵呵急呀
zhou123shao 2011-03-24
  • 打赏
  • 举报
回复
那位哥们解决了呀,共享一下你的成果呀
陈小7 2011-03-24
  • 打赏
  • 举报
回复
[Quote=引用 23 楼 jindan_jinming 的回复:]

存中文解决了
但是发现一个问题 就是中英文数字混合这种形式存的话 英文 数字 也是按照utf-16格式存取 占2个字节
SIM卡最多只能存6个中文字符,现在如何才能存这种混合的情况呢?
[/Quote]

jindan_jinming怎么解决的!我也遇到这样的问题!
影子LEON 2011-03-15
  • 打赏
  • 举报
回复
[Quote=引用 23 楼 jindan_jinming 的回复:]
存中文解决了
但是发现一个问题 就是中英文数字混合这种形式存的话 英文 数字 也是按照utf-16格式存取 占2个字节
SIM卡最多只能存6个中文字符,现在如何才能存这种混合的情况呢?
[/Quote]

这个好像是没有办法的,如果你要存中文的话在名字的开头会加上 0x80,读出来解析度话读到第一个字节是0x80的话走到就是80编码的解码过程,两个字节解出一个字符。
android定义的adn文件中名字这个字段是13个,还是14个字节来着(不是很记得了),反正除开0x80只能放6个字符。号码段好像也有限制长度。具体多少也不记得了。
如果要存超过6个字符的中文的话有两种办法好像。
1,使用81或者82编码,具体你研究,但是这个很有限制条件,对中文不太适合。
2,MS sim卡中MS有个存放额外名字的ef文件可以用来存放超出长度的字符,具体记不清了,可以研究下3gpp文档中的sim卡中的EF文件部分。号码超出长度部分也可以这样来存。
但是很负责任的告诉你,android 在java层没有实现对这个ef文件的存储跟读取,自己研究研究应该可以实现。

  • 打赏
  • 举报
回复
存中文解决了
但是发现一个问题 就是中英文数字混合这种形式存的话 英文 数字 也是按照utf-16格式存取 占2个字节
SIM卡最多只能存6个中文字符,现在如何才能存这种混合的情况呢?
  • 打赏
  • 举报
回复
存好之后放在别的手机也是乱码!
念茜 2011-03-10
  • 打赏
  • 举报
回复
我所想表达的意思是:不要只顾着SIM卡,不考虑自己在Android下...
念茜 2011-03-10
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 jindan_jinming 的回复:]

引用 11 楼 whatwhy83 的回复:
我使用2.2是没有这样的问题的!

不清楚了!
对比了下这个文件的代码,没变化!
[/Quote]

你对比的只是sim卡存储这部分代码吧 , 看看Android提供的相应位置的字符集字库,是不是一样的...不是所有的文字字符都是UNICODE字符集的,我记得2.X里简体中文是GBK...
念茜 2011-03-10
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 jindan_jinming 的回复:]

引用 7 楼 zhouyongyang621 的回复:
试试,String str = new String(alphaTag.getBytes("utf-16be"), "utf-16be");
byteTag = str.getBytes("utf-16be");

还是不行,这次不是乱码,而是英文字符!
[/Quote]


即使存储正确,打开文件读取时 编码不正确 也不行啊 会出现乱码或者是全ASCII码,比如纯英文现象...

按其SIM卡规格存储后,打开时转成utf-8显示中文字符才可以正确 。
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 ljp1205 的回复:]
上面的链接介绍得很清楚,在sim卡中存中文用80格式的话
用80开头,然后加编码字符。
ucs2和unicode只是字节序不同,unicode是小头在前,ucs2是大头在前。。
你转成utf16之后需要把每个编码的前后字节交换位置。


引用 6 楼 jindan_jinming 的回复:
现在发现使用byteTag = alphaTag.getBytes("utf-16be");变……
[/Quote]
String str = new String(alphaTag.getBytes("utf-16be"), "utf-16be");
byteTag = str.getBytes("utf-16le");
这个不知道行不行,马上试试!
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 zhouyongyang621 的回复:]
试试,String str = new String(alphaTag.getBytes("utf-16be"), "utf-16be");
byteTag = str.getBytes("utf-16be");
[/Quote]
还是不行,这次不是乱码,而是英文字符!
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 whatwhy83 的回复:]
我使用2.2是没有这样的问题的!
[/Quote]
不清楚了!
对比了下这个文件的代码,没变化!
whatwhy83 2011-03-10
  • 打赏
  • 举报
回复
我使用2.2是没有这样的问题的!
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 zhouyongyang621 的回复:]
试试,String str = new String(alphaTag.getBytes("utf-16be"), "utf-16be");
byteTag = str.getBytes("utf-16be");
[/Quote]
这个我去试试!
  • 打赏
  • 举报
回复
[Quote=引用 21 楼 wenlin56 的回复:]
写进去你转一次,其编码顺序就已经乱了。当“联系人”程序再读出来的时候,就是乱码。
我印象中是没有这个问题的,要不然你去看看我写着玩的一篇文章?
http://blog.csdn.net/wenlin56/archive/2010/12/14/6074437.aspx
[/Quote]
如果只是联系人读的时候变乱的话,那放在别的手机上应该没什么问题的!
就像是:
我在诺基亚手机上存了一个中文联系人,然后在android里面读取也是中文;现在在android上存了一条中文联系人,在别的手机上也是乱码!
加载更多回复(12)
MOTO XT882一键ROOT工具,本人亲试用过,绝对管用。 1、打开USB调试(前提必须安装摩托罗拉驱动) 2、插上手机,选择仅充电 "Charge Only"模式 3、执行'XT882一键ROOT.bat'(Win7用户以管理员身份运行) 4、下一步,下一步,重启2遍,直到提示你关闭窗口,完成Root。 XT882 ROOT后可以删除软件明细。 AccountAndSyncSettings.apk=同步与帐户设定(绝不能删除) ApplicationsProvider.apk=应用程序支持服务 (绝不能删除) AudioEffectSettings.apk=音效(可删) Besttone.apk=号码百事通(可删) Bluetooth.apk=蓝牙(可删,删除后蓝牙功能消失) Browser.apk=系统自带浏览器(可删,可用其他手机浏览器替代) Calculator.apk=计算器(可删,可用其他替代) CertInstaller.apk=证书服务 (绝不能删除) ContactsProvider2_0.apk =通讯录/联系人数据存储服务 (绝不能删除) CTBrandservice.apk=互联星空与客户服务和号簿助手(可删) CtcnUaService.apk=电信客户服务(可删) DefaultContainerService.apk=默认通讯录服务(绝不能删除) DLNA.apk=媒体共享(可删) DlnaSystemService.apk=DLNA相关(可删) DownloadProvider.apk=下载管理器(绝不能删除) DrmProvider.apk=DRM受保护数据存储服务(绝不能删除) FileManager.apk=简易文件管理(可删,可用ES或RE文件管理器替代) Gallery3D.apk=3D图片浏览器 (可删) HTMLViewer.apk=HTML浏览器(可删) LiveWallpapersPicker.apk=动态壁纸(可删) Latin.apk=moto英文输入法(可删) LatinIME.apk=android键盘(可删) MagicSmokeWallpapers.apk=魔幻烟雾壁纸(可删) MediaProvider.apk=媒体数据存储服务(绝不能删除) MediaSync.apk=媒体同步(可删) MotoSmartHandWriting.apk=moto手写输入法(可删) PackageInstaller.apk=程序安装(绝不能删除) PicoTts.apk=文本转语音(可删) Pinyin.apk=Moto拼音(可删) Restaurant.apk=餐馆(可删) Settings.apk=系统设置(绝不能删除) SettingsProvider.apk=设置服务程序 (绝不能删除) soundback.apk=辅助功能(可删) SoundRecorderMot.apk=录音机(可删,可用第三方录音软件替代) Stk.apk=UIM卡应用(可删,有机友把联系人复制在SIM卡上的就不要删它) Switcher.apk=Moto输入法(可删) SyncML.apk=备份(可删) TelephonyProvider.apk=拨号记录存储服务(绝不能删除) Term.apk=超级终端(可删,不过不建议,可以用来刷Recovery) UserDictionaryProvider.apk =用户数据字典服务(可删) TtsService.apk=Text-to-speech服务(可删) TYSX.apk=天翼视讯(可删) Utk.apk=uiM卡(可删) 大家注意删除Stk.apk和Utk.apk的时候电话信号暂时的没有一下能有不到10秒,然后自己就在恢复呵呵不要害怕。

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧