没有合适的资源?快使用搜索试试~ 我知道了~
用javascript实现gb2312转utf-8的脚本
3 下载量 5 浏览量
2020-10-30
20:11:49
上传
评论
收藏 58KB PDF 举报
温馨提示
试读
2页
用javascript实现gb2312转utf-8的脚本
资源详情
资源评论
资源推荐
用用javascript实现实现gb2312转转utf-8的脚本的脚本
用javascript实现gb2312转utf-8的脚本
信息交换用汉字编码字符集-基本集
汉字标准交换码共分两级。第一级为常用字,有3755字,按汉语拼音字母顺序排列,第二级为次常用字,有3008字,按部首
排列。GB2312的编码范围为2121H-777EH.
UNICODE 是两字节的全编码,对于ASCII字符它也使用两字节表示。代码页是通过高字节的取值范围来确定是ASCII字符,
还是汉字的高字节。如果发生数据损坏, 某处内容破坏,则会引起其后汉字的混乱。UNICODE则一律使用两个字节表示一个
字符,最明显的好处是它简化了汉字的处理过程。
关于编码的文章可以参考:
http://blog.iyi.cn/tech/2005/10/unicode_2.html
http://blog.iyi.cn/tech/2005/10/unicode.html
百度的页面是gb2312的,URL编码自然也是从gb转换而来,比如“一”这个字,百度转换的结果是D2%BB,而从Utf-8转换来的
结果是%E4%B8%80比如google(gb是2字节编码,utf-8是3字节变长编码)
可以用javascript的encodeURI和decodeURI来得到这些结果,设置页面编码就可以看到不同结果了。
在网上找,也没找到现成的转换程序,只得自己写。还好网上不缺gb-utf的对照表,修改了一下就可以用了:gb-utf.txt
这个对照表是将gb字节编码转到utf的16进制编码,而不是字节编码。
javascript中escape和unescape是转换16进制编码用的,因此gb汉字到utf汉字的转换思路是:encodeURI("gb汉字"),到对照
表中查找utf的16进制编码,unescape("16进制utf编码"),得到utf汉字。
中间那一步最关键,我的转换只用到了这一步,其他两步直接调用那两个函数就可以了。下面是转换程序:
复制代码 代码如下:
function genCodeStr(){
var codeRE = new RegExp("'(.*)' : '(.*)'","gi");
var tempStr,codeStr = "";
var myReader = new Reader();
myReader.loadFile('inc/gb2312_utf.txt');//这里改成你的对照表存放的路径
while(!myReader.fStream.atEndofLine) {
tempStr = new String(myReader.fStream.readLine());
codeStr += tempStr.replace(codeRE,"$1") + ":" + tempStr.replace(codeRE,"$2") + ":";
}
Application("codeData") = codeStr;
}
function getCodeStr(){
var codeStr = new String(Application("codeData"));
if(codeStr.indexOf("%a1%a1") == -1){
genCodeStr();
}
return new String(Application("codeData"));
}
function gb2utf(gbStr){
var codeStr = getCodeStr();
var codeRE = new RegExp("(%..%..)","gi");
var replaceRE = new RegExp("(%..%..)","i");
var gbCode;
var utfCode;
var gbStart;
while((codeRE.lastIndex < gbStr.length) && replaceRE.test(gbStr)){
codeRE.exec(gbStr);
gbCode = new String(RegExp.$1);
gbStart = new Number(codeStr.indexOf(gbCode.toLowerCase()));
var utfStart = 0;
if(gbStart != -1){
utfStart= gbStart + 7;
utfCode = codeStr.substring(utfStart,utfStart + 6);
}else{
utfCode = "%u3000";
}
gbStr = gbStr.replace(replaceRE,utfCode);
}
return gbStr;
}
function Reader() { //Class Reader()
this.fso; //Private fso
weixin_38682161
- 粉丝: 3
- 资源: 972
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- database-project-massunaAi笔记
- 2%EF%BC%9A%E9%99%95%E8%A5%BF%E
- yyspdz62_944.apk
- SAP公司间采购EDI配置-如何触发自动MIRO.docx
- python197基于图像识别的仪表实时监控系统.rar
- python196基于循环神经网络的情感分类系统.rar
- I2C驱动SHT30温湿度传感器和LCD12864使用例程(RSCG12864B)
- python193中学地理-中国的江河湖泊教学网(django).rar
- python191基于时间序列分析的大气污染预测软件(django).rar
- python190基于人脸识别智能化小区门禁管理系统.rar
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0