js 编码转换 gb2312 和 utf8 互转的2种方法

 更新时间:2013年08月07日 11:17:03   作者:  
这篇文章介绍了gb2312 和 utf8 互转的JS方法,有需要的朋友可以参考一下
方法一:
复制代码 代码如下:

function gb2utf8(data){
      var glbEncode = [];
      gb2utf8_data = data;
      execScript("gb2utf8_data = MidB(gb2utf8_data, 1)", "VBScript");
      var t=escape(gb2utf8_data).replace(/%u/g,"").replace(/(.{2})(.{2})/g,"%$2%$1").replace(/%([A-Z].)%(.{2})/g,"@$1$2");
      t=t.split("@");
      var i=0,j=t.length,k;
      while(++i<j) {
         k=t[i].substring(0,4);
         if(!glbEncode[k]) 
         {
            gb2utf8_char = eval("0x"+k);
            execScript("gb2utf8_char = Chr(gb2utf8_char)", "VBScript");
            glbEncode[k]=escape(gb2utf8_char).substring(1,6);
         }
         t[i]=glbEncode[k]+t[i].substring(4);
      }
      gb2utf8_data = gb2utf8_char = null;
      return unescape(t.join("%"));
 }
 

 使用时:xxx.innerHTML=gb2utf8(req.responseBody);
方法二:
复制代码 代码如下:

<script language="JavaScript">
 <!--
 function utf8(wide) {
 var c, s;
 var enc = "";
 var i = 0;
 while(i<wide.length) {
 c= wide.charCodeAt(i++);
 // handle UTF-16 surrogates
 if (c>=0xDC00 && c<0xE000) continue;
 if (c>=0xD800 && c<0xDC00) {
 if (i>=wide.length) continue;
 s= wide.charCodeAt(i++);
 if (s<0xDC00 || c>=0xDE00) continue;
 c= ((c-0xD800)<<10)+(s-0xDC00)+0x10000;
 }
 // output value
 if (c<0x80) enc += String.fromCharCode(c);
 else if (c<0x800) enc += String.fromCharCode(0xC0+(c>>6),0x80+(c&0x3F));
 else if (c<0x10000) enc += String.fromCharCode(0xE0+(c>>12),0x80+(c>>6&0x3F),0x80+(c&0x3F));
 else enc += String.fromCharCode(0xF0+(c>>18),0x80+(c>>12&0x3F),0x80+(c>>6&0x3F),0x80+(c&0x3F));
 }
 return enc;
 }
 var hexchars = "0123456789ABCDEF";
 function toHex(n) {
 return hexchars.charAt(n>>4)+hexchars.charAt(n & 0xF);
 }
 var okURIchars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_-";
 function encodeURIComponentNew(s) {
 var s = utf8(s);
 var c;
 var enc = "";
 for (var i= 0; i<s.length; i++) {
 if (okURIchars.indexOf(s.charAt(i))==-1)
 enc += "%"+toHex(s.charCodeAt(i));
 else
 enc += s.charAt(i);
 }
 return enc;
 }
 alert(encodeURIComponentNew("中文"))
 alert(decodeURIComponent(encodeURIComponentNew("中文")))
 // -->
 </script>
 

在java类中配合使用: (适用于ajax)
复制代码 代码如下:

String dwp = new String(request.getParameter("dwp").getBytes("ISO-8859-1"),"gbk") ;
String dwc = new String(request.getParameter("dwc").getBytes("ISO-8859-1"),"gbk") ;

相关文章

  • javascript计算渐变颜色的实例

    javascript计算渐变颜色的实例

    这篇文章主要介绍了javascript计算渐变颜色的实例的相关资料,希望通过本文能帮助到大家,让大家理解掌握这部分内容,需要的朋友可以参考下
    2017-09-09
  • js写出遮罩层登陆框和对联广告并自动跟随滚动条滚动

    js写出遮罩层登陆框和对联广告并自动跟随滚动条滚动

    这篇文章主要介绍了js写出遮罩层登陆框和对联广告并自动跟随滚动条滚动,需要的朋友可以参考下
    2014-04-04
  • bootstrap PrintThis打印插件使用详解

    bootstrap PrintThis打印插件使用详解

    这篇文章主要为大家详细介绍了bootstrap PrintThis打印插件的使用方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-02-02
  • ES6新特性之类(Class)和继承(Extends)相关概念与用法分析

    ES6新特性之类(Class)和继承(Extends)相关概念与用法分析

    这篇文章主要介绍了ES6新特性之类(Class)和继承(Extends)相关概念与用法,结合实例形式较为详细的分析了ES6中类(Class)和继承(Extends)的基本概念、语法、使用方法与注意事项,需要的朋友可以参考下
    2017-05-05
  • 一篇文章弄懂javascript内存泄漏

    一篇文章弄懂javascript内存泄漏

    js的垃圾回收机制就是为了防止内存泄漏的,这篇文章主要给大家介绍了如何通过一篇文章弄懂javascript内存泄漏的相关资料,需要的朋友可以参考下
    2021-05-05
  • javascript实现通过表格绘制颜色填充矩形的方法

    javascript实现通过表格绘制颜色填充矩形的方法

    这篇文章主要介绍了javascript实现通过表格绘制颜色填充矩形的方法,涉及javascript操作表格与样式的相关技巧,需要的朋友可以参考下
    2015-04-04
  • 浅析创建javascript对象的方法

    浅析创建javascript对象的方法

    下面小编就为大家带来一篇浅析创建javascript对象的方法。小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-05-05
  • JS中Safari浏览器中的Date

    JS中Safari浏览器中的Date

    在js中处理Date时,发现Safari和其他浏览器的支持方式不一致。下面通过本文给大家分享js中Safari浏览器中的Date,感兴趣的朋友一起学习吧
    2017-07-07
  • JavaScript 异常处理 详解

    JavaScript 异常处理 详解

    这篇文章主要介绍了JavaScript 异常处理 详解,需要的朋友可以参考下
    2015-02-02
  • js将图片转base64的两种实现方法

    js将图片转base64的两种实现方法

    这篇文章主要给大家介绍了关于js将图片转base64的两种实现方法,Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符来表示二进制数据的方法,需要的朋友可以参考下
    2023-07-07

最新评论