关于我们 广告服务 社区论坛
设为首页 加入收藏

行业新闻
服 务 器
模版下载
建站指南
冲浪宝典
办公软件
网站运营
操作系统
QQ 专题
网页制作
安全防御
视频教程
网络编程
SEO专区
软件下载
图像设计
Cisco
网页特效
Wap 技术
联盟赚钱
网页素材
 首页 | 企业建站 | 网页制作 | 网站运营 | 网络编程 | 图像设计 | 冲浪宝典 | 操作系统 | SEO专区 | 联盟赚钱 | Cisco

欢迎来到e天下网络首页>>网络编程>>JSP>>正文|教你制作GBK与Unicode的对照表

教你制作GBK与Unicode的对照表

[ 来路:21kn.com    时间:2007-7-8 16:15:01    点击: ]

 

  前段时间,在所参与的项目中遇到了一个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码。

::::站长友情提示:多花一分钟学点什么都好::::

 

上一篇:实例:创建SWT项目的原生库导入问题  下一篇:自己解决tomcat启动时,8080端口被占用的常用方法

 ::热点信息::

 

= = 免责声明 = =

① 欢迎转载我网所刊信息,请注明“来源:E天下网络”。
② 凡本网注明“来源:XXX(非E天下网络)”的作品,均转载自其它媒体,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如因作品内容、版权和其它问题需要同本网联系的,请在30日内进行。
※联系方式:Airtofly@163.com

::推荐文章::

 

ASP教程:详细学习ASP的内置对象

::图像设计::

 

动态图片搜索家——GIF RUNN
软件搜索利器——FileFerret
实例说明构图要讲规律
Character Builder让你尽展靓
全景图速成者Cool360
三维模型速成工具——Canoma
剪贴专家SmartBoard 32
新世纪的图像处理利器——Ph
更多内容..

 

 

关于我们 广告服务 友情链接 合作伙伴 社区论坛 免责声明

Copyright © 2007   21kn.com Inc. All rights reserved.e天下网络工作室

网站白天客服QQ:26875416 (非24小时)  合作QQ:597004688    粤ICP备06026423号