js 编码转换 gb2312 和 utf8 互转的2种方法
2013-08-07 00:00
686 查看
方法一:
使用时:xxx.innerHTML=gb2utf8(req.responseBody);
方法二:
在java类中配合使用: (适用于ajax)
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") ;
相关文章推荐
- js 编码转换 gb2312 和 utf8 互转的2种方法
- js 编码转换 gb2312 & utf8
- js中取绝对值的2种方法!
- C# 编码转换 UTF8转GB2312 GB2312转UTF8
- url 编码转换(utf8 - gb2312)
- Ajax 中XmlHttp 乱码 的解决方法 (UTF8,GB2312 编码 解码)
- js弹出层包含flash 不能关闭隐藏的2种处理方法
- MyEclipse默认编码为GBK,修改为UTF8的方法【修改JS编码格式】
- Ajax------客户端 编码转换 javascript,vbscript(utf8-gb2312)
- C# 编码转换 UTF8转GB2312 GB2312转UTF8
- iOS与js交互的2种方法
- Asp.net后台调用js 2种方法
- 编码转换(utf8转换为gb2312)
- MyEclipse默认编码为GBK,修改为UTF8的方法【修改JS编码格式】
- php检测字符串编码(utf-8,gbk,gb2312)是否为utf8编码的方法总结
- Android中检测字符编码(GB2312,ASCII,UTF8,UNICODE,TOTAL——ENCODINGS)方法(二)
- JS GB2312与UTF8之间的转换
- 浅析js中取绝对值的2种方法
- JS 跳转页面延迟2种方法
- js弹出层包含flash 不能关闭隐藏的2种处理方法