如何制作GBK与Unicode的对照表
前段时间,在所参与的项目中遇到了一个unicode与gb之间转码失败的问题,一些不常用汉字的编码都被转成了“??”,这些汉字没有显示出来,于是自己对相关的问题做了一些研究并最终使问题得以解决。现在就结合前面两篇的unicode与GB方面的基本原理,介绍这种制作GBK-Unicode编码对照表的方法。
Java的字符串String类功能强大,不但能进行一些基本的字符串操作,还可以根据需要构造指定字符集的字符串,本文所介绍的方法正是利了这一点,这种方法的基本思路是:
1、遍历GBK编码表中的所有汉字,使用该字的GB编码构造一个字符串。GBK编码表中各部分的汉字分块比较整齐,很容易遍历。
2、使用getBytes()方法取得该字符的字节数组,由于Java是用unicode来表示字符的,所以此汉字的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);
}
}
}
}
这一段是对GBK/2区的汉字进行遍历并处理的代码,GBK/2区的首字节范围在[0xb0,0xf7],尾字节范围在[0xa1,0xfe],在构造字符串时使用的字符集为GBK:
以下是引用片段:
String str = new String(gbkBytes,"GBK");
在使用getBytes()取得的字节数组中会有四个元素,前两个不知是做什么用的,可能与字符串本身的结构有关,接下来的两个字节才是真正的unicode码。但这两个字节是倒序的,要从最后一个字节开始取,之所以这样是与big_endian和little_endian有关的,这里不多说。
当每一次内层循环结束时,buffer字符串中前两个数字就是一个GB码,后面两个数字就是一个unicode码,把它写到文件中就行了。
这样的文件得到之后,再在另外的程序中载入文件,把Unicode值装入数组,以GB码为索引,就可以很方便地由GB码查得Unicode码。
张啸建站工作室为您提供临沂网站建设,自助建站-会打字就会建站,域名注册,虚拟主机,网站优化咨询服务,价格低,质量优,与您的网站一起成长。欢迎进行入zxroom.net张啸建站工作室为您提供临沂网站建设,自助建站-会打字就会建站,域名注册,虚拟主机,网站优化咨询服务,价格低,质量优,与您的网站一起成长。欢迎进行入zxroom.net
- 网站制作培训-合理的网页设计所具有的特征
- 网页中文字不跟随浏览器字体大小设置而变动?
- 值得收藏的东东 50条网页制作小技巧集锦
- 网页特效:滚动条的彩色显示
- 在页面上实现Google PR值的显示
- 网页设计引入CSS样式的五种方式
- 用FireWorks 三帧轻松打造酷 Banner
- 临沂网站制作培训之Dreamweaver编写CSS的技巧
- 网页框架和网页框架集如何工作
- 图片在显示一定的时间后消失
- 网站设计教程之色彩系列教程:基础知识
- 网站制作培训之以新窗口的形式打开目标链接
- 解决img图片下多余空白的CSS代码
- 超级漂亮的表格:彩色背景
- 网站制作培训之Dreamweaver网页制作秘诀之二
- 在自己的计算机上安装Discuz!论坛
- 网页特效推荐 可以任意编辑的动态表格
- 网站制作培训之网页导航设计九大注意事项
- 网站制作培训之webService的远程调试问题
- 网页特效:expression将JS、Css结合起来