众果搜的博客

脚踏大地,仰望星空,致力于财经投资网站导航与在线网络工具的开发与普及

Search(博客搜索)

热文排行

最近发表

最新评论及回复

« 文章照妖镜上线(文章论文反抄袭查询工具)提高警惕,保卫自己 »

不错的utf-8和GB2312之间的转换代码

经常使用Asp.net作为后台数据处理程序的时候,如果调用了其他网站的GB2312编码的网页内容,如百度的搜索结果,就需要进行网页编码的转转换:utf-8到GB2312的转换,或GB2312到utf-8之间的转换。因为asp.net的页面一般采用的是utf-8编码方式。找到一篇博文,不错的代码。如果不使用转换函数,从百度搜索引擎返回的搜索结果为乱码,但谷歌则不存在,经过加入下面的编码转换函数,很好的解决了本人遇到的问题。 

//转化成十六进制, 调用的是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;
}

原文链接:http://www.cnblogs.com/cuixiping/archive/2008/04/07/1141006.html

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

Powered By Z-Blog 1.8 Spirit Build 80722 Code detection by Codefense

Copyright www.zhongguosou.com. Some Rights Reserved.微信号:MiZhiHeiGeTaXiaoMi