javascript实现gbk编码的方法:1、在js建立一个“字符->gbk码”的映射表,通过查表来解决;2、使用escapedbc和encodeuricomponent进行编码。
本文操作环境:windows7系统、javascript1.8.5版、dell g3电脑。
javascript 怎么实现gbk编码?
javascript对中文gbk编码
今天帮同事弄一个在迅雷新闻上展示的页面,里面的搜索功能对关键词用的是gbk编码,而他们给我的页面上gb2312的,造成搜索功能的关键词乱码。后面google了一下,找到了解决方案,很有效。
以”超级本“这个关键词为例:
gb2312下编码后为%e8%b6%85%e7%ba%a7%e6%9cgbk下编码后为%b3%ac%bc%b6%b1%be
在 js 中要怎样实现使用gbk集进行 uri 编码呢
%hh 其实就只是把一个字节值转换成2位16进制数字,再在前头加上 % 而己
问题是 js 中没有函数可以支持取得字符的 gbk 编码值 str.charcodeat(index) 取得的是 unicode 编码值。
现在在网上流行的一种解决方案就是,在 js 建立一个 “字符->gbk码” 的映射表,通过查表来解决
因为字符多,这使得 js 雍肿了不少,而且在网上找到的这些映射表建的是不是全面,很难说。
其实在 ie 中,我们可以借助 vbscript 来支持这个工作。
vbscript 中: (asc(“盟”) + 65536) mod 65536 就可以取得字符 “盟” 的 gbk 码 50123
但是其它浏览器不支持 vbscript ,可怎么办?
有这么一个办法:
在页面中插入一个图片 img, 设置 img.src = “…中文…”; 这个时候,浏览器会自动把这个 src 的值进行 uri 编码
而它是使用 gbk 还是 utf8 ,是根据文档编码来决定的.
这时候,我们就可以好好利用一下这个特性:
<meta http-equiv="content-type" content="text/html; charset=gbk" /><script type="text/javascript">function encodeurl(s) {var img = document.createelement("img");// escapedbc 对多字节字符编码的函数function escapedbc(s) {if (!s) return ""if (window.activexobject) {// 如果是 ie, 使用 vbscriptexecscript(‘setlocale "zh-cn"’, ‘vbscript’);return s.replace(/[\d\d]/g, function($0) {window.vbsval = "";execscript(‘window.vbsval=hex(asc("’ + $0 + ‘"))’, "vbscript");return "%" + window.vbsval.slice(0,2) + "%" + window.vbsval.slice(-2);});}// 其它浏览器利用浏览器对请求地址自动编码的特性img.src = "nothing.action?separator=" + s;return img.src.split("?separator=").pop();}// 把 多字节字符 与 单字节字符 分开,分别使用 escapedbc 和 encodeuricomponent 进行编码return s.replace(/([^\x00-\xff]+)|([\x00-\xff]+)/g, function($0, $1, $2) {return escapedbc($1) + encodeuricomponent($2||”);});}alert(encodeurl("中文"));</script>
推荐学习:《javascript基础教程》
以上就是javascript 怎么实现gbk编码的详细内容。