将字符串转换成gb2312或者utf-8编码的参数(js版)


Posted in Javascript onApril 10, 2013

在很多时候,我们直接在url中传递中文参数时,读到的中文都是乱码,那么我们应该怎么将这些参数转换呢?

下面我们来介绍一下方法
1、我们新建一个 UrlEncode.js 然后将下面的代码拷贝进去

//JS版的Server.UrlEncode编码函数 
String.prototype.UrlEncodeGB2312 = function () { 
var str = this; 
str = str.replace(/./g, function (sHex) { 
window.EnCodeStr = ""; 
window.sHex = sHex; 
window.execScript('window.EnCodeStr=Hex(Asc(window.sHex))', "vbscript"); 
return window.EnCodeStr.replace(/../g, "%{blogcontent}amp;"); 
}); 
return str; 
} 
String.prototype.UrlEncode = function () { 
var s = escape(this); 
var sa = s.split("%"); 
var retV = "", retE = ""; 
if (sa[0] != "") { 
retV = sa[0]; 
} 
for (var i = 1; i < sa.length; i++) { 
if (sa[i].substring(0, 1) == "u") { 
retV += Hex2Utf8(Str2Hex(sa[i].substring(1, 5))); 
if (sa[i].length > 4) 
retV += sa[i].substring(5); 
} 
else retV += "%" + sa[i]; 
} 
return retV; 
} 
function Str2Hex(s) { 
var c = ""; 
var n; 
var ss = "0123456789ABCDEF"; 
var digS = ""; 
for (var i = 0; i < s.length; i++) { 
c = s.charAt(i); 
n = ss.indexOf(c); 
digS += Dec2Dig(eval(n)); 
} 
return digS; 
} 
function Dec2Dig(n1) { 
var s = ""; 
var n2 = 0; 
for (var i = 0; i < 4; i++) { 
n2 = Math.pow(2, 3 ? i); 
if (n1 >= n2) { 
s += '1'; 
n1 = n1 ? n2; 
} 
else 
s += '0'; 
} 
return s; 
} 
function Dig2Dec(s) { 
var retV = 0; 
if (s.length == 4) { 
for (var i = 0; i < 4; i++) { 
retV += eval(s.charAt(i)) * Math.pow(2, 3 ? i); 
} 
return retV; 
} 
return -1; 
} 
function Hex2Utf8(s) { 
var retS = ""; 
var tempS = ""; 
var ss = ""; 
if (s.length == 16) { 
tempS = "1110" + s.substring(0, 4); 
tempS += "10" + s.substring(4, 10); 
tempS += "10" + s.substring(10, 16); 
var sss = "0123456789ABCDEF"; 
for (var i = 0; i < 3; i++) { 
retS += "%"; 
ss = tempS.substring(i * 8, (eval(i) + 1) * 8); 
retS += sss.charAt(Dig2Dec(ss.substring(0, 4))); 
retS += sss.charAt(Dig2Dec(ss.substring(4, 8))); 
} 
return retS; 
} 
return ""; 
}

2、使用方法,当然就是我们的((字符串.UrlEncode() )就可以将字符串转换为utf-8编码的url参数((字符串.UrlEncodeGB2312() )就可把字符串转换成gb2312编码的参数,很好吧,O(∩_∩)O哈哈~
Javascript 相关文章推荐
JavaScript 事件系统
Jul 22 Javascript
火狐下table中创建form导致两个table之间出现空白
Sep 02 Javascript
用jquery等比例控制图片宽高的具体实现
Jan 28 Javascript
node.js中的fs.readSync方法使用说明
Dec 17 Javascript
jQuery插件scroll实现无缝滚动效果
Apr 27 Javascript
JS实现消息来时让网页标题闪动效果的方法
Apr 20 Javascript
JS添加或修改控件的样式(Class)实现方法
Oct 15 Javascript
JS通过调用微信API实现微信支付功能的方法示例
Jun 29 Javascript
Thinkjs3新手入门之如何使用静态资源目录
Dec 06 Javascript
JS实现的3des+base64加密解密算法完整示例
May 18 Javascript
手把手教你使用TypeScript开发Node.js应用
May 06 Javascript
Vue Cli3 打包配置并自动忽略console.log语句的方法
Apr 23 Javascript
原生js实现给指定元素的后面追加内容
Apr 10 #Javascript
图片无缝滚动代码(向左/向下/向上)
Apr 10 #Javascript
裁剪字符串trim()自定义改进版
Apr 10 #Javascript
关于JS管理作用域的问题
Apr 10 #Javascript
js异常捕获方法介绍
Apr 10 #Javascript
Javascript 中 null、NaN和undefined的区别总结
Apr 10 #Javascript
关于IE BUG与字符串截取substr的解决办法
Apr 10 #Javascript
You might like
自己做矿石收音机
2021/03/02 无线电
ThinkPHP写第一个模块应用
2012/02/20 PHP
巧用php中的array_filter()函数去掉多维空值的代码分享
2012/09/07 PHP
PHP扩展Memcache分布式部署方案
2015/12/06 PHP
PHP中PDO连接数据库中各种DNS设置方法小结
2016/05/13 PHP
PHP实现通过二维数组键值获取一维键名操作示例
2019/10/11 PHP
Laravel如何实现适合Api的异常处理响应格式
2020/06/14 PHP
JavaScript Event学习第四章 传统的事件注册模型
2010/02/07 Javascript
jquery插件制作 图片走廊 gallery
2012/08/17 Javascript
Jquery日期选择datepicker插件用法实例分析
2015/06/08 Javascript
javascript学习总结之js使用技巧
2015/09/02 Javascript
js获取指定字符前/后的字符串简单实例
2016/10/27 Javascript
Bootstrap整体框架之CSS12栅格系统
2016/12/15 Javascript
node中modules.exports与exports导出的区别
2018/06/08 Javascript
实例讲解JS中pop使用方法
2019/01/27 Javascript
ES6如何用一句代码实现函数的柯里化
2020/01/18 Javascript
[47:03]完美世界DOTA2联赛PWL S3 Galaxy Racer vs Phoenix 第二场 12.10
2020/12/13 DOTA
Python XML RPC服务器端和客户端实例
2014/11/22 Python
Python获取单个程序CPU使用情况趋势图
2015/03/10 Python
Python 文件管理实例详解
2015/11/10 Python
Python多进程分块读取超大文件的方法
2016/04/13 Python
python生成词云的实现方法(推荐)
2017/06/13 Python
python实现烟花小程序
2019/01/30 Python
numpy中三维数组中加入元素后的位置详解
2019/11/28 Python
python实现ip地址的包含关系判断
2020/02/07 Python
Python基于wordcloud及jieba实现中国地图词云图
2020/06/09 Python
python反爬虫方法的优缺点分析
2020/11/25 Python
深入CSS3 动画效果的总结详解
2013/05/09 HTML / CSS
html5 datalist标签使用示例(自动完成组件)
2014/05/04 HTML / CSS
JMS中Topic和Queue有什么区别
2013/05/15 面试题
应聘医药代表职位求职信
2013/10/21 职场文书
小学教师的个人自我鉴定
2013/10/26 职场文书
学校消防安全制度
2014/01/30 职场文书
对孩子的寄语
2014/04/09 职场文书
无犯罪记录证明
2014/09/19 职场文书
如何创建一个创建MySQL数据库中的datetime类型
2022/03/21 MySQL