将字符串转换成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学习笔记9 prototype封装继承
Jan 11 Javascript
在vs2010中调试javascript代码方法
Feb 11 Javascript
js中判断数字\字母\中文的正则表达式 (实例)
Jun 29 Javascript
jquery选择符快速提取web表单数据示例
Mar 27 Javascript
javascript父、子页面交互技巧总结
Aug 08 Javascript
jQuery实现响应鼠标背景变化的动态菜单效果代码
Aug 27 Javascript
javascript动画系列之模拟滚动条
Dec 13 Javascript
webpack 1.x升级过程中的踩坑总结大全
Aug 09 Javascript
vue2.0 自定义组件的方法(vue组件的封装)
Jun 05 Javascript
node.js事件轮询机制原理知识点
Dec 22 Javascript
vue 调用 RESTful风格接口操作
Aug 11 Javascript
uniapp 微信小程序 自定义tabBar 导航
Apr 22 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基于CURL进行POST数据上传实例
2014/11/10 PHP
PHP未登录自动跳转到登录页面
2016/12/21 PHP
php mysql_list_dbs()函数用法示例
2017/03/29 PHP
Laravel框架集成UEditor编辑器的方法图文与实例详解
2019/04/17 PHP
关于PHP中interface的用处详解
2020/07/26 PHP
javascript parseInt 大改造
2009/09/27 Javascript
JS函数验证总结(方便js客户端输入验证)
2010/10/29 Javascript
基于jQuery的仿flash的广告轮播代码
2010/11/04 Javascript
jquery获取checkbox的值并post提交
2015/01/14 Javascript
jquery实现可自动判断位置的弹出层效果代码
2015/10/12 Javascript
javascript省市区三级联动下拉框菜单实例演示
2015/11/29 Javascript
谷歌Chrome浏览器扩展程序开发小记
2016/01/06 Javascript
Bootstrap每天必学之滚动监听
2016/03/16 Javascript
基于jQuery的select下拉框选择触发事件实例分析
2016/11/18 Javascript
小程序实现上传视频功能
2020/08/18 Javascript
Python使用cx_Oracle模块将oracle中数据导出到csv文件的方法
2015/05/16 Python
Django发送html邮件的方法
2015/05/26 Python
python爬虫框架scrapy实战之爬取京东商城进阶篇
2017/04/24 Python
Python批量发送post请求的实现代码
2018/05/05 Python
利用Python写一个爬妹子的爬虫
2018/06/08 Python
使用python 打开文件并做匹配处理的实例
2019/01/02 Python
python 3.74 运行import numpy as np 报错lib\site-packages\numpy\__init__.py
2019/10/06 Python
Python 余弦相似度与皮尔逊相关系数 计算实例
2019/12/23 Python
python 函数中的参数类型
2020/02/11 Python
Python装饰器的应用场景代码总结
2020/04/10 Python
Keras - GPU ID 和显存占用设定步骤
2020/06/22 Python
简述 Python 的类和对象
2020/08/21 Python
怀俄明州飞钓:Platte River Fly Shop
2017/12/28 全球购物
美国豪华的多品牌精品店:The Webster
2019/07/31 全球购物
实习自我鉴定范文
2013/10/30 职场文书
优秀干部获奖感言
2014/01/31 职场文书
化学教学随笔感言
2014/02/19 职场文书
真诚的求职信
2014/07/04 职场文书
2014年班务工作总结
2014/12/02 职场文书
幼儿园音乐教学反思
2016/02/18 职场文书
Java后端 Dubbo retries 超时重试机制的解决方案
2022/04/14 Java/Android