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

时间:2009-10-08 02:47:11

标签: java unicode character-encoding

 hibyte  lobyte  makeunicode
 250     65      57345

我得到了这个表,而hibyte和lobyte是一些可能使用big5或GBK编码的汉字,hibyte是高字节,而lobyte是低字节。

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

但是在我尝试显示之后,它们显示出不同的性格,一定有一些问题,有人可以帮助我吗?

5 个答案:

答案 0 :(得分:1)

我真的不明白你想要什么,但是从你的高字节和低字节,我得到它来打印一个汉字:

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 :(得分:0)

5秒的谷歌搜索出现http://www.chinesecomputing.com/encodings/index.html。 将big5或GBK转换为unicode只是身份映射。我不确定你的字节是做什么的,但是,250 * 256 + 65 = 64065,而不是57345。

答案 2 :(得分:0)

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;;;;;

即一些亚洲雕文。可能是,就是这样?

答案 3 :(得分:0)

与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();

打印

答案 4 :(得分:0)

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

显然,它不是用Big5编码的。它可能是GBK / GB18030。

但GK18030向下兼容GBK。