有人可以帮我解决这个问题吗?关于unicode

问题描述:

 
hibyte lobyte makeunicode 
250  65  57345 

我得到了这张表,hibyte和lobyte是一些可能使用big5或GBK编码的汉字,hibyte是hight字节,lobyte是低字节。有人可以帮我解决这个问题吗?关于unicode

我认为unicode可能是unicode中的一些编码,对应于带有hibyte和lobyte的big5/GBK字符。

但是我尝试显示后,它们显示不同的字符,肯定有一些问题,有人能帮助我吗?

+0

你在做什么来显示它们? – akf 2009-10-08 02:58:25

+0

不管是哪个平台? – MemoryLeak 2009-10-08 03:03:48

5秒钟的谷歌搜索结果变成http://www.chinesecomputing.com/encodings/index.html。 将big5或GBK转换为unicode只是身份映射。我不确定你在处理你的字节是250 * 256 + 65 = 64065,而不是57345.

+0

是的,他们自己编码... – MemoryLeak 2009-10-08 06:36:07

57345是十六进制的0xE001,它没有定义Unicode字符(参见完整列表: http://www.unicode.org/Public/UNIDATA/UnicodeData.txt

但是,如果你250 * 256 + 65,你会得到0xFA41,这是

FA41;CJK COMPATIBILITY IDEOGRAPH-FA41;Lo;0;L;654F;;;;N;;;;; 

也就是说,一些亚洲字形。可能是,就是这样?

+0

我相信U + E001是在私人使用区域。 – McDowell 2009-10-08 11:04:24

+0

是的,这就是我的意思。 – 2009-10-08 13:33:31

我真的不明白你想要什么,但是从你的高字节和低字节,我把它打印中国性状:

byte[] bytes = {(byte)250, (byte)65}; 
String str = new String(bytes, "GBK"); 
System.out.println(str); // prints: 鶤 
System.out.println((int)str.charAt(0)); // prints: 40356 

我不知道你的“57345”的由来从

+1

为什么不是byte [] bytes = {(byte)65,(byte)250}; ? ;)字节顺序使所有的区别! – 2009-10-08 13:35:02

类似newacct的答案,但只是为了显示它打印这个字符为其它中国编码,太:

byte[] b = new byte[] {(byte)250,(byte)65}; 
String s = new String(b,"GB18030"); 
OutputStreamWriter fos = new OutputStreamWriter(new FileOutputStream(new File("c:\\a.html")),"GB18030"); 
fos.write(s); 
fos.close(); 

打印

Big5的第一个字节(hibyte)的范围是0xA1〜0xF9;而GBK为0x81〜0xFE。

很明显,它没有用Big5编码。它可能是GBK/GB18030。

但是GK18030向下兼容GBK。