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

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

JavaScript代码
  1. //转化成十六进制, 调用的是vbscript的Hex函数   
  2. function Hex(n)   
  3. {      
  4. c = n;   
  5. execScript("c = Hex(c)""vbscript");   
  6. return c;   
  7. }   
  8. //返回文字的AscaII编码, 调用的是vbscript的Asc函数   
  9. function Asc(s)   
  10. {   
  11. c = s;   
  12. execScript("c = Asc(c)""vbscript");   
  13. return c;   
  14. }   
  15. //获取文字的gb2312编码   
  16. function gb2312Encode(str)   
  17. {   
  18. var string = "";   
  19. c = s = "";   
  20. var high = "";   
  21. var low = "";   
  22. for(var i = 0; i < str.length; i++)   
  23. {   
  24. c = Asc(str.charAt(i));   
  25. if(Math.abs(c) < 0xFF)   
  26.    string += str.charAt(i);   
  27. else  
  28. {   
  29.    if(c < 0) c += 0x10000;   
  30.    high = ((c & 0xFF00) >> 8) & 0x00FF;   
  31.    low = c & 0xFF;   
  32.    string += "%" + Hex(high) + "%" + Hex(low);   
  33. }   
  34. }   
  35. return string;   
  36. }   
  37. //将收到的gb2312编码进行解码   
  38. function gb2312Decode(data)   
  39. {   
  40. string = "";   
  41. str = "";   
  42. d = data;   
  43. n = "";   
  44. c = "";   
  45. execScript("l = LenB(d)""vbscript");   
  46. execScript("d = MidB(d, 1)""vbscript");   
  47. for( i = 1; i <= l; i++)   
  48. {   
  49. execScript("c = AscB(MidB(d, i, 1))""vbscript");   
  50. if( c < 0x80)   
  51. {   
  52.    execScript("str = Chr(c)""vbscript");   
  53.    string += str;   
  54. }   
  55. else  
  56. {   
  57.    execScript("n = AscB(MidB(d, i + 1, 1))""vbscript");   
  58.    execScript("str = Chr(CLng(c) * &H100 + CInt(n))""vbscript");   
  59.    string += str;   
  60.    i = i + 1;   
  61. }   
  62. }   
  63. return string;   
  64. }   

 



文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags:
相关日志:
评论: 0 | 引用: 0 | 查看次数: 822
发表评论
昵 称: 注册帐号 密码: 游客直接输入昵称不需要密码
内 容:
验证码: 验证码