前段时间,在所参与的项目中遇到了一个unicode与gb之间转码失败的问题,一些不常用汉字的编码都被转成了“??”,这些汉字没有显示出来,于是自己对相关的问题做了一些研究并最终使问题得以解决。现在就结合前面两篇的unicode与GB方面的基本原理,介绍这种制作GBK-Unicode编码对照表的方法。 Java的字符串String类功能强大,不但能进行一些基本的字符串操作,还可以根据需要构造指定字符集的字符串,本文所介绍的方法正是利了这一点,这种方法的基本思路是: 1、遍历GBK编码表中的所有汉字,使用该字的GB编码构造一个字符串。GBK编码表中各部分的汉字分块比较整齐,很容易遍历。 2、使用getBytes()方法取得该字符的字节数组,由于Java是用unicode来表示字符的,所以此汉字的unicode就在其中。 以下是一段示例代码: 以下是引用片段: 这一段是对GBK/2区的汉字进行遍历并处理的代码,GBK/2区的首字节范围在[0xb0,0xf7],尾字节范围在[0xa1,0xfe],在构造字符串时使用的字符集为GBK: 以下是引用片段: 当每一次内层循环结束时,buffer字符串中前两个数字就是一个GB码,后面两个数字就是一个unicode码,把它写到文件中就行了。 这样的文件得到之后,再在另外的程序中载入文件,把Unicode值装入数组,以GB码为索引,就可以很方便地由GB码查得Unicode码。
{
int count = 0;
for(int segIndex=0xb0; segIndex<=0xf7; segIndex++) {
for(int charIndex=0xa1; charIndex<=0xfe; charIndex++) {
byte [] gbkBytes = new byte[] {(byte)(segIndex), (byte)charIndex};
byte [] unicodeBytes;
String str = new String(gbkBytes,”GBK”);
unicodeBytes = str.getBytes(“unicode”);
if(unicodeBytes.length == 4) {
count++;
String buffer = “”;
for (int i=0;i<gbkBytes.length;i++)
buffer += (int)(0x00ff&gbkBytes[i]) + ” “;
for (int i=3;i>1;i–)
buffer += (int)(0x00ff&unicodeBytes[i]) + ” “;
buffer += ” “;
osw.write(buffer);
}
}
}
}
String str = new String(gbkBytes,”GBK”);
在使用getBytes()取得的字节数组中会有四个元素,前两个不知是做什么用的,可能与字符串本身的结构有关,接下来的两个字节才是真正的unicode码。但这两个字节是倒序的,要从最后一个字节开始取,之所以这样是与big_endian和little_endian有关的,这里不多说。
教你制作gbk与unicode的对照表_心得技巧教程
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » 教你制作gbk与unicode的对照表_心得技巧教程
相关推荐
-      经典收藏:网页页面常用的特殊符号_心得技巧教程
-      用html和css写出漂亮正规的blog_心得技巧教程
-      网站页面的均衡规划与选择_心得技巧教程
-      一个网友观点:两年以来使用div排版的经验_心得技巧教程
-      photoshop制作“非主流”彩虹色调照片_photoshop教程
-      禁止查看网页源代码方法总结_心得技巧教程
-      左右图片循环滚动停顿一下后继续_心得技巧教程
-      图片左右循环连续滚动代码,解决marquee的留白问题 _心得技巧教程