这个是 utf-8版本的
js实现 php的 urlencode() 和 urldecode()两个函数的功能。
在传送cookie的时候 在 php端实现 url编码
但要用 js来解码cookie的时候 就出现汉字不能不能识别的问题 这个 js 很好的解决
怎么样 可以实现吧 呵呵呵 资料参考来源: http://demon.tw/programming/javascript-php-urldecode.html
js实现 php的 urlencode() 和 urldecode()两个函数的功能。
在传送cookie的时候 在 php端实现 url编码
但要用 js来解码cookie的时候 就出现汉字不能不能识别的问题 这个 js 很好的解决
urlcode.js 代码如下
function urlencode(clearString)
{
var output = '';
var x = 0;
clearString = utf16to8(clearString.toString());
var regex = /(^[a-zA-Z0-9-_.]*)/;
while (x < clearString.length)
{
var match = regex.exec(clearString.substr(x));
if (match != null && match.length > 1 && match[1] != '')
{
output += match[1];
x += match[1].length;
}
else
{
if (clearString[x] == ' ')
output += '+';
else
{
var charCode = clearString.charCodeAt(x);
var hexVal = charCode.toString(16);
output += '%' + ( hexVal.length < 2 ? '0' : '' ) + hexVal.toUpperCase();
}
x++;
}
}
function utf16to8(str)
{
var out, i, len, c;
out = "";
len = str.length;
for(i = 0; i < len; i++)
{
c = str.charCodeAt(i);
if ((c >= 0x0001) && (c <= 0x007F))
{
out += str.charAt(i);
}
else if (c > 0x07FF)
{
out += String.fromCharCode(0xE0 | ((c >> 12) & 0x0F));
out += String.fromCharCode(0x80 | ((c >> 6) & 0x3F));
out += String.fromCharCode(0x80 | ((c >> 0) & 0x3F));
}
else
{
out += String.fromCharCode(0xC0 | ((c >> 6) & 0x1F));
out += String.fromCharCode(0x80 | ((c >> 0) & 0x3F));
}
}
return out;
}
return output;
}
function urldecode(encodedString)
{
var output = encodedString;
var binVal, thisString;
var myregexp = /(%[^%]{2})/;
function utf8to16(str)
{
var out, i, len, c;
var char2, char3;
out = "";
len = str.length;
i = 0;
while(i < len)
{
c = str.charCodeAt(i++);
switch(c >> 4)
{
case 0: case 1: case 2: case 3: case 4: case 5: case 6: case 7:
out += str.charAt(i-1);
break;
case 12: case 13:
char2 = str.charCodeAt(i++);
out += String.fromCharCode(((c & 0x1F) << 6) | (char2 & 0x3F));
break;
case 14:
char2 = str.charCodeAt(i++);
char3 = str.charCodeAt(i++);
out += String.fromCharCode(((c & 0x0F) << 12) |
((char2 & 0x3F) << 6) |
((char3 & 0x3F) << 0));
break;
}
}
return out;
}
while((match = myregexp.exec(output)) != null
&& match.length > 1
&& match[1] != '')
{
binVal = parseInt(match[1].substr(1),16);
thisString = String.fromCharCode(binVal);
output = output.replace(match[1], thisString);
}
//output = utf8to16(output);
output = output.replace(/\\+/g, " ");
output = utf8to16(output);
return output;
}
然后我们写一个文件测试 demo.html
代码如下:
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<html>
<body>
<script type="text/javascript" src="urlcode.js"></script>
<script type="text/javascript">
ss="大家好啊!这是js-php-urlcode 20130918"
aa=urlencode(ss)
bb=urldecode(aa)
alert("编码后:"+aa);
alert("解码后:"+bb);
</script>
这个是 utf-8版本的
js实现 php的 urlencode() 和 urldecode()两个函数的功能。
在传送cookie的时候 在 php端实现 url编码
但要用 js来解码cookie的时候 就出现汉字不能不能识别的问题 这个 js 很好的解决
</body>
</html>
怎么样 可以实现吧 呵呵呵 资料参考来源: http://demon.tw/programming/javascript-php-urldecode.html
http://demon.tw/programming/javascript-php-urlencode.html
在此感谢!