您的位置:

GB2312和GBK编码转换详解

一、GB2312和GBK编码转换器

GB2312和GBK都是常见的中文字符集编码,但因为其编码方式不同,在一些应用场景中需要进行转换。因此,我们可以开发一个GB2312和GBK编码转换器来满足这种需求。

function gb2312ToGBK(str){
  var gb2312 = unescape(str.replace(/\\u/g,'%u'));
  var re = /%([0-9A-F]{2})([0-9A-F]{2})/g;
  var rs = gb2312.replace(re, function(match, p1, p2) {
    return String.fromCharCode(parseInt(p1+ p2, 16)+0x8080);
  });
  return rs;
}

function gbkToGB2312(str){
  var gbk = unescape(str.replace(/\\u/g, '%u'));
  var re = /%([0-9A-F]{2})([0-9A-F]{2})/g;
  var rs = gbk.replace(re, function(match, p1, p2) {
    return String.fromCharCode(parseInt(p1+ p2, 16)-0x8080);
  });
  return rs;
}

二、GBK编码转换为汉字JS

在前端开发中,有时候我们需要将GBK编码的数据转换为汉字以方便用户查阅。我们可以通过以下代码实现:

function gbkToHanzi(gbk){
  var byteArray = [];
  for (var i = 0; i < gbk.length; i++) {
    var code = gbk.charCodeAt(i);
    if ((code >= 0x81 && code <= 0xfe) || (code >= 0x40 && code <= 0x7e)){
      byteArray.push(code);
    } else {
      byteArray.push(gbk.charCodeAt(i));
    }
  }
  return String.fromCharCode.apply(null, byteArray);
}

三、GBK编码转换表

GBK编码是双字节编码,它包含了对汉字的完整支持,其编码表也相对比较庞大。以下为GB2312和GBK编码表的对应关系:

0100-01A0(包括8140-FEFE内的全部)          : GB2312  
FE3B-FE3E;FE40-FE4F;FE50-FE5D;FE5E-FE5F       : GB2312  
FE10-FE19;FE30-FE52;FE54-FE61;FE62-FE66;/u     : MS Windows (默认下)  
4E00-9FA0                                     : GB2312,GBK,Unicode  
FF01-FF5E;FFE0-FFE6                           : MS Windows (默认下)  

四、GBK编码转换为汉字APP

在移动设备上,我们可以开发一个GBK编码转换为汉字的APP来满足用户的需求。以下为一个简单的APP代码示例:

  
    
  
    GBK编码转换为汉字APP
    <script>
      function gbkToHanzi(gbk){
        var byteArray = [];
        for (var i = 0; i < gbk.length; i++) {
          var code = gbk.charCodeAt(i);
          if ((code >= 0x81 && code <= 0xfe) || (code >= 0x40 && code <= 0x7e)){
            byteArray.push(code);
          } else {
            byteArray.push(gbk.charCodeAt(i));
          }
        }
        return String.fromCharCode.apply(null, byteArray);
      }
      
      function convert(){
        var gbk = document.getElementById('gbk').value;
        var hanzi = gbkToHanzi(gbk);
        document.getElementById('hanzi').value = hanzi;
      }
    </script>
  
  
    
    <input type="text" id="gbk">
    
    
<input type="text" id="hanzi" readonly>