关于SE K600中的PIM的中文问题

Rayuu 2006-09-12 03:27:51
这台机器是从美国买回来的,自带中文操作系统,但默认的编码方式是iso-8859-1,仅支持UTF-8

目前写一个程序,想得到手机电话簿中联系人信息。联系人名为中文“是”。

代码:

ContactList m_nativePab = null;
m_nativePab = (ContactList) PIM.getInstance().openPIMList(PIM.CONTACT_LIST, PIM.READ_ONLY);
Enumeration cons = m_nativePab.items();
item = (PIMItem) cons.nextElement();

String[] parts = item.getStringArray(javax.microedition.pim.Contact.NAME, 0);

最后读出来parts[0]是“?”

然后再new String(parts[0].getBytes("ISO-8859-1"),"UTF-8"),得到的显示值是63。

请教如何才能正常显示中文啊?还是这款机器就没法用J2ME读出中文来?(但是手机系统有中文环境)
...全文
287 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
Rayuu 2006-10-25
  • 打赏
  • 举报
回复
还有人能帮我看看吗?
Rayuu 2006-09-22
  • 打赏
  • 举报
回复
手机只支持ISO-8859-1和UTF-8两种字符集……
guo__peng 2006-09-22
  • 打赏
  • 举报
回复
new String(parts[0].getBytes("ISO-8859-1"),"GB2312")
Rayuu 2006-09-21
  • 打赏
  • 举报
回复
Rayuu 2006-09-19
  • 打赏
  • 举报
回复
还有没有别的办法啊~这个问题对小弟我来说很重要啊!
Rayuu 2006-09-18
  • 打赏
  • 举报
回复
谢谢jlu3389(8nine),不过这是读取手机中文件的方法,但是PIM信息不能通过读取文件的方式来读取,所以还是行不通。仍然感谢!
yanhan0615 2006-09-15
  • 打赏
  • 举报
回复
我觉得使用getBinary(int field, int index)的到的结果是一条记录的某个字段的信息,所以整个byte[]应该是有效的数据,那么offset = 0; length = byte[].length;
jlu3389 2006-09-15
  • 打赏
  • 举报
回复
http://blog.csdn.net/jlu3389
Rayuu 2006-09-15
  • 打赏
  • 举报
回复
可恶,居然规定了每个字段的数据类型,不能跨类型读取数据,比如

javax.microedition.pim.Contact.FORMATTED_NAME

是String型的,就只能用getString(javax.microedition.pim.Contact.FORMATTED_NAME,0)去读取。用getBinary(int field, int index)会抛出java.lang.IllegalArgumentException。

怎么办才好啊~郁闷了~
yanhan0615 2006-09-14
  • 打赏
  • 举报
回复
这应该不是一个通用的方法,而是厂商的库提供的方法,我猜测可能在编码格式方面出了点问题,你尝试把你的数据都替换成英文,如果能正确显示就可以确定是中文编码的问题;
先确定问题的原因,再想办法
Rayuu 2006-09-14
  • 打赏
  • 举报
回复
大虾们救救我吧!
Rayuu 2006-09-14
  • 打赏
  • 举报
回复
呵呵,为什么我就没查到呢,惭愧惭愧。

但是现在不明白的是,每个属性(比如联系人姓名、电话)的offset和length从哪里来的呢?
yanhan0615 2006-09-14
  • 打赏
  • 举报
回复
呵呵,丢人了,没有听说过,上网查了一下,建议使用PIMItem的
byte[] getBinary(int field, int index)方法,这样得到了字节数组后使用

new String(byte[] bytes,int offset,int length,"utf-8");方法看能否得到正确的值
否则直接使用item.getStringArray()就没有办法控制编码格式了
Rayuu 2006-09-14
  • 打赏
  • 举报
回复
首先关于pim包
import javax.microedition.pim.PIM;
import javax.microedition.pim.PIMItem;
这都是javax的包

其次,就是英文能读出来,但是中文读出来就不对。一定是编码的问题。但是这个机器本身是支持中文的,因为有中文的系统。但是用程序测试,结果是只支持iso-8859-1和UTF-8两种编码(默认为前者)。所以不知道该如何处理中文。

请指点迷津!!
Rayuu 2006-09-13
  • 打赏
  • 举报
回复
有谁做过相关的吗?帮帮小弟~~先谢过了~~
Rayuu 2006-09-13
  • 打赏
  • 举报
回复
这个是j2me提供的方法,应该没有问题吧?别的也没有方法能取到联系人信息了啊
yanhan0615 2006-09-12
  • 打赏
  • 举报
回复
没有做过这样的东西,但是我觉得首先要确定
item.getStringArray(javax.microedition.pim.Contact.NAME, 0);得到的值是正确的

13,100

社区成员

发帖
与我相关
我的任务
社区描述
Java J2ME
社区管理员
  • J2ME社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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