将字符串转换成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 相关文章推荐
10个新的最有前途的JavaScript框架
Mar 12 Javascript
使用jquery为table动态添加行的实现代码
Mar 30 Javascript
JQuery DataTable删除行后的页面更新利用Ajax解决
May 17 Javascript
JS通过分析userAgent属性来判断浏览器的类型及版本
Mar 28 Javascript
AngularJS iframe跨域打开内容时报错误的解决办法
Jan 26 Javascript
JavaScript类的写法
Sep 17 Javascript
通过BootStrap实现轮播图的实际应用
Sep 26 Javascript
jstree的简单实例
Dec 01 Javascript
jQuery选择器之属性过滤选择器详解
Sep 28 jQuery
React BootStrap用户体验框架快速上手
Mar 06 Javascript
react基本安装与测试示例
Apr 27 Javascript
vue组件是如何解析及渲染的?
Jan 13 Vue.js
原生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
IIS7.X配置PHP运行环境小结
2011/06/09 PHP
PHP中判断变量为空的几种方法小结
2013/11/12 PHP
PHP 使用redis简单示例分享
2015/03/05 PHP
PHPMailer发送邮件
2016/12/28 PHP
Extjs TimeField 显示正常时间格式的代码
2011/06/28 Javascript
js动态添加事件并可传参数示例代码
2013/10/21 Javascript
js 定时器setTimeout无法调用局部变量的解决办法
2013/11/28 Javascript
jQuery实现可用于博客的动态滑动菜单完整实例
2015/09/17 Javascript
Uploadify上传文件方法
2016/03/16 Javascript
微信小程序使用radio显示单选项功能【附源码下载】
2017/12/11 Javascript
vue-cli 首屏加载优化问题
2018/11/06 Javascript
Vue组件之单向数据流的解决方法
2018/11/10 Javascript
用node开发并发布一个cli工具的方法步骤
2019/01/03 Javascript
JS FormData对象使用方法实例详解
2020/02/12 Javascript
微信小程序报错: thirdScriptError的错误问题
2020/06/19 Javascript
vue 动态设置img的src地址无效,npm run build 后找不到文件的解决
2020/07/26 Javascript
微信小程序实现自定义动画弹框/提示框的方法实例
2020/11/06 Javascript
JavaScript中clientWidth,offsetWidth,scrollWidth的区别
2021/01/25 Javascript
全面了解python中的类,对象,方法,属性
2016/09/11 Python
Python中的id()函数指的什么
2017/10/17 Python
Python利用sqlacodegen自动生成ORM实体类示例
2019/06/04 Python
python发送多人邮件没有展示收件人问题的解决方法
2019/06/21 Python
Django后台管理系统的图文使用教学
2020/01/20 Python
PyCharm 无法 import pandas 程序卡住的解决方式
2020/03/09 Python
Python3标准库之threading进程中管理并发操作方法
2020/03/30 Python
预订奥兰多和佛罗里达州公园门票:FloridaTix
2018/01/03 全球购物
Tirendo比利时:在线购买轮胎
2018/10/22 全球购物
介绍一下grep命令的使用
2015/06/12 面试题
模具数控专业自荐信
2014/01/27 职场文书
《美丽的彩虹》教学反思
2014/02/25 职场文书
员工拾金不昧表扬稿
2015/05/05 职场文书
2015年车间安全管理工作总结
2015/05/13 职场文书
《自己的花是让别人看的》教学反思
2016/02/19 职场文书
创业者如何撰写出一份打动投资人的商业计划书?
2019/07/02 职场文书
go语言基础 seek光标位置os包的使用
2021/05/09 Golang
Java使用Unsafe类的示例详解
2021/09/25 Java/Android