Linux中国  设为主页
 收藏本站
 
当前位置: > 首页 ->网站设计 ->HTML/DHTML ->教你制作GBK与Unicode的对照表
  相关分类: 
AJAX教程
CSS/CSS2
Dreamweaver
Fireworks
Flash
HTML/DHTML
JavaScript
Phososhop
网页制作
  站内搜索: 
热门文章排行
热门文章排行 常用网页播放器代码(06-05)
HTML基础知识:认识http-equiv属性(04-12)
网页设计颜色代码大全(06-05)
HTML语法详细介绍(04-12)
HTML教程-Frame 的其它属性(04-12)
精采文章排行
精采文章排行 浅议Web网页Form表单设计技巧(06-05)
超级实用的几种表单校验效果收集(06-05)
揭开正则表达式的神秘面纱(06-05)
教你制作GBK与Unicode的对照表(06-05)
常用网页播放器代码(06-05)
  ·超级实用的几种表单校验效果收集·揭开正则表达式的神秘面纱·教你制作GBK与Unicode的对照表·常用网页播放器代码·要速度更要灵活,JFCMS系统功能评测·渐飞CMS普及风暴活动公告·SSI技术—SHTML(生成静态时用的最火)·Google官方讲解NOINDEX、NOFOLLOW、NOARC·一个form两个提交按钮,分别提交到两页面

教你制作GBK与Unicode的对照表

作者:Webmaster   来源:Linuxdby.com   点击:   日期:2007-06-05 [收藏] [投稿]

  IE是否经常中毒?推荐您

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



 如果您对本文有任何疑问或者建议,请到讨论区发表您的意见: >> 论坛入口 <<



上一篇:常用网页播放器代码   下一篇:揭开正则表达式的神秘面纱
文章评论】 【收藏本文】 【推荐好友】 【打印本文】 【我要投稿】 【论坛讨论

   相关文章:
·浅议Web网页Form表单设计技巧

   文章评论:(1条)
  
 请留名: 匿名评论   点击查看所有评论 论坛讨论
 

 声明:刊登此文章是为了传递更多信息,文章内容仅供参考,转载请注明出处。