将字符串转换成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 相关文章推荐
各情景下元素宽高的获取实现代码
Sep 13 Javascript
js特殊字符转义介绍
Nov 05 Javascript
深入分析JSON编码格式提交表单数据
Jun 25 Javascript
javascript自动恢复文本框点击清除后的默认文本
Jan 12 Javascript
jQuery 3.0 的变化及使用方法
Feb 01 Javascript
Bootstrap表单组件教程详解
Apr 26 Javascript
JS基于面向对象实现的选项卡效果示例
Dec 20 Javascript
jquery.uploadifive插件怎么解决上传限制图片或文件大小问题
May 08 jQuery
JavaScript正则表达式简单实用实例
Jun 23 Javascript
Angular 2父子组件数据传递之局部变量获取子组件其他成员
Jul 04 Javascript
在Layui中实现开关按钮的效果实例
Sep 29 Javascript
利用JavaScript写一个简单计算器
Nov 27 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
解析php防止form重复提交的方法
2013/07/01 PHP
php的XML文件解释类应用实例
2014/09/22 PHP
PHP多进程编程总结(推荐)
2016/07/18 PHP
PHP构造二叉树算法示例
2017/06/21 PHP
比较简单的一个符合web标准的JS调用flash方法
2007/11/29 Javascript
ExtJs事件机制基本代码模型和流程解析
2010/10/24 Javascript
JS 在指定数组中随机取出N个不重复的数据
2014/06/10 Javascript
关于编写性能高效的javascript事件的技术
2014/11/28 Javascript
JavaScript控制图片加载完成后调用回调函数的方法
2015/03/20 Javascript
异步安全加载javascript文件的方法
2015/07/21 Javascript
jQuery+CSS3实现3D立方体旋转效果
2015/11/10 Javascript
基于Echarts 3.19 制作常用的图形(非静态)
2016/05/19 Javascript
js判断checkbox是否选中个数的方法(超简单)
2016/08/19 Javascript
微信小程序访问node.js接口服务器搭建教程
2017/04/25 Javascript
Vue.js 单页面多路由区域操作的实例详解
2017/07/17 Javascript
浅析java线程中断的办法
2018/07/29 Javascript
Javascript实现html转pdf高清版(提高分辨率)
2020/02/19 Javascript
vue移动端的左右滑动事件详解
2020/06/17 Javascript
python获取目录下所有文件的方法
2015/06/01 Python
python 环境变量和import模块导入方法(详解)
2017/07/11 Python
python字符串判断密码强弱
2020/03/18 Python
pycharm通过anaconda安装pyqt5的教程
2020/03/24 Python
pycharm实现print输出保存到txt文件
2020/06/01 Python
Django mysqlclient安装和使用详解
2020/09/17 Python
AmazeUI中模态框的实现
2020/08/19 HTML / CSS
Canvas在超级玛丽游戏中的应用详解
2021/02/06 HTML / CSS
Street One瑞士:德国现代时装公司
2019/10/09 全球购物
英国第一的滑雪服装和装备零售商:Snow+Rock
2020/02/01 全球购物
会计专业自荐信
2013/12/02 职场文书
自荐信的基本格式
2014/02/22 职场文书
初中班主任经验交流材料
2014/05/16 职场文书
大学班长竞选稿
2015/11/20 职场文书
离婚协议书范本(2016最新版)
2016/03/18 职场文书
Django展示可视化图表的多种方式
2021/04/08 Python
人工智能深度学习OpenAI baselines的使用方法
2022/05/20 Python
SpringBoot深入分析讲解监听器模式下
2022/07/15 Java/Android