將字符串轉(zhuǎn)換成gb2312或者utf-8編碼的參數(shù)(js版)
更新時(shí)間:2013年04月10日 16:36:12 作者:
直接在url中傳遞中文參數(shù)時(shí),讀到的中文都是亂碼,那么我們應(yīng)該怎么將這些參數(shù)轉(zhuǎn)換呢,接下來與大家分享下將字符串轉(zhuǎn)換成utf-8或者gb2312編碼的參數(shù)的技巧
在很多時(shí)候,我們直接在url中傳遞中文參數(shù)時(shí),讀到的中文都是亂碼,那么我們應(yīng)該怎么將這些參數(shù)轉(zhuǎn)換呢?
下面我們來介紹一下方法
1、我們新建一個(gè) UrlEncode.js 然后將下面的代碼拷貝進(jìn)去
//JS版的Server.UrlEncode編碼函數(shù)
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、使用方法,當(dāng)然就是我們的((字符串.UrlEncode() )就可以將字符串轉(zhuǎn)換為utf-8編碼的url參數(shù)((字符串.UrlEncodeGB2312() )就可把字符串轉(zhuǎn)換成gb2312編碼的參數(shù),很好吧,O(∩_∩)O哈哈~
下面我們來介紹一下方法
1、我們新建一個(gè) UrlEncode.js 然后將下面的代碼拷貝進(jìn)去
復(fù)制代碼 代碼如下:
//JS版的Server.UrlEncode編碼函數(shù)
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、使用方法,當(dāng)然就是我們的((字符串.UrlEncode() )就可以將字符串轉(zhuǎn)換為utf-8編碼的url參數(shù)((字符串.UrlEncodeGB2312() )就可把字符串轉(zhuǎn)換成gb2312編碼的參數(shù),很好吧,O(∩_∩)O哈哈~
您可能感興趣的文章:
- js 編碼轉(zhuǎn)換 gb2312 和 utf8 互轉(zhuǎn)的2種方法
- Javascript下的urlencode編碼解碼方法附decodeURIComponent
- js對(duì)圖片base64編碼字符串進(jìn)行解碼并輸出圖像示例
- js 顯示base64編碼的二進(jìn)制流網(wǎng)頁圖片
- utf-8編碼引起js輸出中文亂碼的解決辦法
- 通過javascript進(jìn)行UTF-8編碼的實(shí)現(xiàn)方法
- JS 文字符串轉(zhuǎn)換unicode編碼函數(shù)
- JavaScript Base64編碼和解碼,實(shí)現(xiàn)URL參數(shù)傳遞。
- JavaScript實(shí)現(xiàn)Base64編碼轉(zhuǎn)換
- js下用gb2312編碼解碼實(shí)現(xiàn)方法
- JS實(shí)現(xiàn)的哈夫曼編碼示例【原始版與修改版】
相關(guān)文章
js實(shí)現(xiàn)動(dòng)畫特效的文字鏈接鼠標(biāo)懸停提示的方法
這篇文章主要介紹了js實(shí)現(xiàn)動(dòng)畫特效的文字鏈接鼠標(biāo)懸停提示的方法,實(shí)例分析了javascript操作css的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-03-03用js實(shí)現(xiàn)table單元格高寬調(diào)整,兼容合并單元格(兼容IE6、7、8、FF)實(shí)例
用js實(shí)現(xiàn)table單元格寬度和高度調(diào)整,有合并單元格也可以的.兼容IE6,7,8以及FF,附上代碼css,html,js三部份,有需要的朋友可以參考一下2013-06-06FF火狐下獲取一個(gè)元素同類型的相鄰元素實(shí)現(xiàn)代碼
FF火狐下獲取一個(gè)元素同類型的相鄰元素實(shí)現(xiàn)代碼 ,需要的朋友可以了解下2012-12-12JavaScript實(shí)現(xiàn)淺拷貝與深拷貝的方法分析
這篇文章主要介紹了JavaScript實(shí)現(xiàn)淺拷貝與深拷貝的方法,結(jié)合實(shí)例形式總結(jié)分析了JavaScript淺拷貝與深拷貝的定義與使用方法,需要的朋友可以參考下2018-07-07用js來定義瀏覽器中一個(gè)左右浮動(dòng)元素相對(duì)于頁面主體寬度的位置的函數(shù)
用js來定義瀏覽器中一個(gè)左右浮動(dòng)元素相對(duì)于頁面主體寬度的位置的函數(shù) 函數(shù)的參數(shù):elem元素、頁面主體寬度(如:990、950寬)、elem與頁面主體DIV的左邊距2012-01-01JS實(shí)現(xiàn)標(biāo)簽滾動(dòng)切換效果
這篇文章給大家?guī)淼氖怯肑S實(shí)現(xiàn)item標(biāo)簽點(diǎn)擊后滾動(dòng)切換的效果,有興趣的朋友測試學(xué)習(xí)下吧。2017-12-12