不错的utf-8和GB2312之间的转换代码
作者:佚名 日期:2009-09-23
经常使用Asp.net作为后台数据处理程序的时候,如果调用了其他网站的GB2312编码的网页内容,如百度的搜索结果,就需要进行网页编码的转转换:utf-8到GB2312的转换,或GB2312到utf-8之间的转换。因为asp.net的页面一般采用的是utf-8编码方式。找到一篇博文,不错的代码。如果不使用转换函数,从百度搜索引擎返回的搜索结果为乱码,但谷歌则不存在,经过加入下面的编码转换函数,很好的解决了本人遇到的问题。
JavaScript代码
- //转化成十六进制, 调用的是vbscript的Hex函数
- function Hex(n)
- {
- c = n;
- execScript("c = Hex(c)", "vbscript");
- return c;
- }
- //返回文字的AscaII编码, 调用的是vbscript的Asc函数
- function Asc(s)
- {
- c = s;
- execScript("c = Asc(c)", "vbscript");
- return c;
- }
- //获取文字的gb2312编码
- function gb2312Encode(str)
- {
- var string = "";
- c = s = "";
- var high = "";
- var low = "";
- for(var i = 0; i < str.length; i++)
- {
- c = Asc(str.charAt(i));
- if(Math.abs(c) < 0xFF)
- string += str.charAt(i);
- else
- {
- if(c < 0) c += 0x10000;
- high = ((c & 0xFF00) >> 8) & 0x00FF;
- low = c & 0xFF;
- string += "%" + Hex(high) + "%" + Hex(low);
- }
- }
- return string;
- }
- //将收到的gb2312编码进行解码
- function gb2312Decode(data)
- {
- string = "";
- str = "";
- d = data;
- n = "";
- c = "";
- execScript("l = LenB(d)", "vbscript");
- execScript("d = MidB(d, 1)", "vbscript");
- for( i = 1; i <= l; i++)
- {
- execScript("c = AscB(MidB(d, i, 1))", "vbscript");
- if( c < 0x80)
- {
- execScript("str = Chr(c)", "vbscript");
- string += str;
- }
- else
- {
- execScript("n = AscB(MidB(d, i + 1, 1))", "vbscript");
- execScript("str = Chr(CLng(c) * &H100 + CInt(n))", "vbscript");
- string += str;
- i = i + 1;
- }
- }
- return string;
- }
评论: 0 | 引用: 0 | 查看次数: 822
发表评论
上一篇
下一篇
文章来自:
Tags:
相关日志:




