J2ME里怎么得到一个汉字的区位码?

godspeed1024 2010-09-20 10:06:42
原来做过一个桌面JAVA程序,里面需要用到汉字的区位码,网上搜了一些文章,知道要用到一些编码转换,把想处理的字符串用.getBytes()方法获取到编码,然后对高低位字节分别作简单的运算就得到了区码位码。
可是当把这个程序移植到J2ME上时就有了问题,问题在于通过getBytes()得到的数组内容不一样。在模拟器上可以正确运行,但在真机上(我用的NOKIA6300)显示出的内容就跟模拟器上不一样,因此也无法得到区位码

可以就拿这个简短的程序做个实验:
当它在模拟器上运行时,显示的值是-73 -57; 而在真机上运行时却只有一个63

import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Form;
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;

public class JustATest extends MIDlet {
public JustATest() {
// TODO Auto-generated constructor stub
}

protected void destroyApp(boolean unconditional)
throws MIDletStateChangeException {
// TODO Auto-generated method stub

}

protected void pauseApp() {
// TODO Auto-generated method stub

}

protected void startApp() throws MIDletStateChangeException {
// TODO Auto-generated method stub
Form form = new Form("Test");
String s = "非";
byte[] b = s.getBytes();
form.append("s.getBytes() = :");
for (int i=0; i<b.length; i++) {
form.append(Integer.toString(b[i]));
}
Display.getDisplay(this).setCurrent(form);
}

}

我想知道到底真机上用什么办法才能获取到汉字的区位码值?比如对于这个“非”字,谁能告诉我用怎样的编码转换才能让我获得跟在PC上一样的 -73 -57这两个值?
...全文
76 点赞 收藏 9
写回复
9 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
softice_ 2010-09-22
这么麻烦!
回复
「已注销」 2010-09-22
转码最底层最快速的方法,就是建一个char到GBK编码的映射。

google下 GBK 编码表
回复
编码方式不一样,pc上的模拟器可能 默认 是 unicode编码
而真机上 应该是 GBK,所以 真机的结果是正确的

把模拟器的编码设成gbk吧
回复
blueduan1985 2010-09-21
[Quote=引用 4 楼 godspeed1024 的回复:]
试过了不行,会抛出异常表明这是个不支持的编码方式

有谁做过相关东西的,可以告诉我在J2ME真机上怎么得到指定汉字的区位码吗?
[/Quote]

你的手机不支持GBK编码,那就没有任何系统方法可以给你调用了。
要想解决只能自己实现转码。
转码的函数网上应该能搜索的到的。
回复
godspeed1024 2010-09-21
[Quote=引用 2 楼 colaice2009 的回复:]
byte[] b = s.getBytes("GBK");

可能是默认编码方式不同造成的.
[/Quote]

试过了不行,会抛出异常表明这是个不支持的编码方式

有谁做过相关东西的,可以告诉我在J2ME真机上怎么得到指定汉字的区位码吗?
回复
godspeed1024 2010-09-21
[Quote=引用 5 楼 blueduan1985 的回复:]
引用 4 楼 godspeed1024 的回复:
试过了不行,会抛出异常表明这是个不支持的编码方式

有谁做过相关东西的,可以告诉我在J2ME真机上怎么得到指定汉字的区位码吗?


你的手机不支持GBK编码,那就没有任何系统方法可以给你调用了。
要想解决只能自己实现转码。
转码的函数网上应该能搜索的到的。
[/Quote]

我在网上找了半天也没找到从UTF-8转换到区位码的方法
回复
凡员外 2010-09-21
不晓得
回复
colaice2009 2010-09-20
byte[] b = s.getBytes("GBK");

可能是默认编码方式不同造成的.
回复
那你得到的是什么?
回复
相关推荐
发帖
J2ME
创建于2007-09-28

1.3w+

社区成员

Java J2ME
申请成为版主
帖子事件
创建了帖子
2010-09-20 10:06
社区公告
暂无公告