一、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-FE5F;FE60-FE66;/u : MS Windows (默认下)
4E00-9FA0 : GB2312,GBK,Unicode
FF01-FF5E;FFE0-FFE6 : MS Windows (默认下)
四、GBK编码转换为汉字APP
在移动设备上,我们可以开发一个GBK编码转换为汉字的APP来满足用户的需求。以下为一个简单的APP代码示例:
<meta charset="gbk">
<title>GBK编码转换为汉字APP</title>
<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>
<label for="gbk">请输入GBK编码:</label>
<input type="text" id="gbk">
<button onclick="convert()">转换</button>
<br>
<label for="hanzi">汉字:</label>
<input type="text" id="hanzi" readonly>