`
Eastsun
  • 浏览: 308946 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

一个将BIG5编码转换为GB2312编码的类

阅读更多

RT,就是利用BIG5与GB2312码的对照表,代码本身很容易,只是找对照表花了我很长时间.

java 代码
  1. import  java.io.*;   
  2. /**  
  3. *实现由BIG5编码到GB2312编码转换的工具类  
  4. *@author: Eastsun  
  5. *@version: 2007.2.24 v0.5  
  6. */   
  7. public   class  Big2Gb{   
  8.      private   static   final  String tabFile = "bg-gb.tab" ;   
  9.      private   static   byte [] data;   
  10.      static {   
  11.          try {   
  12.             FileInputStream fis = new  FileInputStream(tabFile);   
  13.              int  len =fis.available();   
  14.             data = new   byte [len];   
  15.             fis.read(data);   
  16.             fis.close();   
  17.         } catch (Exception ex){   
  18.             ex.printStackTrace();   
  19.             System.exit( 1 );   
  20.         }   
  21.     }   
  22.        
  23.      /**  
  24.     *取得BIG5汉字big在data中的偏移  
  25.     */   
  26.      private   static   int  indexOf( int  big){   
  27.          int  high =(big>>> 8 )& 0xff ;   
  28.          int  low  =big& 0xff ;   
  29.            
  30.         high -=  0xa1 ;   
  31.          if (low<= 0x7e ) low -=  0x40 ;   
  32.          else           low -= ( 0xa1  - 0x7e  - 1 ) + 0x40 ;   
  33.            
  34.          return   2 *(high* 157 +low);   
  35.     }   
  36.      /**  
  37.     *将保存在bs数字中的big5编码的字符串数据转换成gb2312编码的数据  
  38.     *注意:此方法将更改原先存储的数据  
  39.     *@param bs 需要转换的以big5编码的字符串数据  
  40.     *@return bs 经过转换的数据,保存在参数中的byte数组中  
  41.     */   
  42.      public   static   byte [] translateBig5ToGb( byte [] bs){   
  43.          int  index = 0 ;   
  44.          while (index<bs.length){   
  45.              int  high =bs[index]& 0xff ;   
  46.              if (high>= 0xa1 &&high<= 0xfe ){   
  47.                 index ++;   
  48.                  if (index>=bs.length)  break ;   
  49.                  int  low =bs[index]& 0xff ;   
  50.                  if (low< 0x40 ||low> 0xfe continue ;   
  51.                  if (low> 0x7e &&low< 0xa1 continue ;   
  52.                  int  offset =indexOf((high<< 8 )|low);   
  53.                 bs[index- 1 ] =data[offset];   
  54.                 bs[index  ] =data[offset+ 1 ];   
  55.                 index++;   
  56.             }   
  57.              else  index++;   
  58.         }   
  59.          return  bs;   
  60.     }   
  61.        
  62.      public   static  String translateBig5ToGb(String big){   
  63.         String result = null ;   
  64.          try {   
  65.              byte [] bs =big.getBytes( "big5" );   
  66.             bs =translateBig5ToGb(bs);   
  67.             result = new  String(bs, "gb2312" );   
  68.         } catch (Exception e){   
  69.         }   
  70.          return  result;   
  71.     }   
  72.        
  73. }  
  • bg2gb.rar (16.4 KB)
  • 描述: 源代码及对照表
  • 下载次数: 206
分享到:
评论
3 楼 zhangts8888 2008-09-04  
谢谢了。呵呵
2 楼 wildwind 2008-06-03  
Thanks
1 楼 wufan0023 2008-04-07  
谢谢了,先拷贝下去看看能不能用。

相关推荐

    VB中的GB2312 -Big5编码转换程序源码.7z

    反之,如果要将Big5编码转换为GB2312,可以使用类似的代码: ```vb Function Big5ToGB2312(ByVal big5String As String) As String Dim gb2312String As String gb2312String = StrConv(big5String, ...

    BIG5转换为GB2312 c代码资源

    标题中的“BIG5转换为GB2312 c代码资源”指的是一个C语言实现的程序,用于将使用BIG5编码的字符集转换成GB2312编码。BIG5是台湾和香港地区广泛使用的传统中文字符编码,而GB2312是中国大陆的标准简体中文字符集。这...

    编码转换器 绿色版 gb2312 gbk utf-8

    标题和描述中提到的"编码转换器 绿色版 gb2312 gbk utf-8 万能转换"是一个软件工具,它能够帮助用户将文本文件从一种编码格式转换到另一种,尤其是GB2312、GBK和UTF-8这三种常见的中文编码格式。 1. **编码系统**:...

    简体繁体转换利器gb2312,big5,utf-8各种编码批量互转

    总的来说,“简体繁体转换利器gb2312,big5,utf-8各种编码批量互转”是一个强大而实用的工具,它能有效地帮助我们解决中文字符编码转换的问题,提高工作效率,减少由于编码不匹配带来的困扰。对于需要处理中文文本的...

    记事本的各种编码转换 GBK GB2312 UNICODE UTF8

    本资源主要关注的是“记事本”的各种编码转换,包括GBK、GB2312、UNICODE(UTF-16)以及UTF-8等格式。下面将详细介绍这些编码类型及其相互转换的方法。 首先,GBK编码,全称为“汉字内码扩展规范”,是在GB2312基础...

    GB/BIG5/UTF-8 文件编码批量转换程序

    "GB/BIG5/UTF-8 文件编码批量转换程序"就是解决这个问题的工具,它可以将GB2312(GBK)、BIG5编码的文件批量转换为UTF-8编码,确保在各种环境中正确显示文本。 3. **批量转换** 批量转换功能使得用户无需逐个文件...

    简繁文字转换小软件BIG5ToGB2312

    综上所述,"简繁文字转换小软件BIG5ToGB2312"是一个用于处理中文编码转换的工具,主要服务于需要在BIG5和GB2312编码之间进行转换的用户。它的便捷性和小巧体积使其成为处理繁简转换问题的理想选择,特别是对于那些...

    Big5-GB-Unicode互相转换程序.zip_GB unicode_between_big5_big5 gb_big5 t

    标题中的"Big5-GB-Unicode互相转换程序.zip"表明这是一个关于字符编码转换的软件包,主要用于在Big5、GBK(GB2312)和Unicode之间进行转换。Big5是繁体中文常用的编码方式,而GBK(GB2312)是简体中文的标准编码,...

    GB/BIG5/UTF-8 文件编码批量转换工具

    例如,如果你收到一份BIG5编码的繁体中文文档,但在大陆使用GB或UTF-8编码的系统上打开会出现乱码,这时使用这个工具将文件转换为GB2312或UTF-8即可正常显示。 批量转换功能是该工具的一大亮点,这意味着你可以一次...

    Big5和GB码相互转换的源码

    # 假设我们已经有了一个将Big5编码转换为Unicode的函数 unicode_char = big5_to_unicode(big5_char) # 使用gbk编码将Unicode字符编码为GB码 gb_char = unicode_char.encode('gbk') return gb_char # 同理...

    vc在GB码和Big5码间转换字符编码转换

    "vc在GB码和Big5码间转换字符编码转换"的主题涉及到两个主要的中文编码标准:GB码(GBK)和Big5码,以及如何在它们之间进行转换。在Windows环境下,VC++(Visual C++)常用于开发这样的转换程序。 GB码,全称为...

    文件编码转换(UTF-8、GB、BIG5)第三版

    在【GB2UTF8.exe】这个程序中,我们可以看到它提供了一个从GB编码到UTF-8的转换功能。这个过程涉及到字符的解码和编码两个步骤。首先,程序读取GB编码的文件,将每个字节对解码为对应的汉字;然后,再将这些汉字编码...

    UTF-8编码转BIG5、gb2312

    例如,一个使用UTF-8编码的网站可能需要与使用GB2312编码的数据库交互,或者一个BIG5编码的文本文件需要在UTF-8环境下打开。不正确的编码可能导致乱码问题,使得文本无法正确读取。 编码转换的方法有很多,包括使用...

    Big5编码台湾繁体字体和GBK编码简体字体之间相互转换示例代码

    这个名为`Big5ToGBK`的压缩包文件很可能包含了一个实现上述功能的源代码文件,供开发者参考和使用。通过编译和运行这些代码,你可以实现Big5编码和GBK编码之间的实际转换。 总之,Big5和GBK编码是中文字符在不同...

    网站即时大五码(BIG5)转国标码(GB2312)软件

    网站大五码转国标码软件,可即时在线转换。可放于自己网站下,您不必再强迫自己去看陌生的繁体字,方便...她将您的网站下的所有网页及链接全部即时在线转换(BIG5-&gt;GB2312),纯国产软件,真的花费我一个月的心血哦^o^。

    VB源码_GB码与BIG5码的相互转换

    "basBIG2GB.bas"很可能是一个包含转换函数的基础模块,它通过查表的方式,将BIG5码转换为GB码,或者反之。 "Demo.exe"是编译后的可执行文件,用户可以直接运行以体验转换功能。"frmDemo.frm"和"frmDemo.frx"是VB...

Global site tag (gtag.js) - Google Analytics