在用AJAX与后台交互时经常要对中文进行编码解码,对于JS来说有两个函数:encodeURIComponent用于编码,decodeURIComponent用于解码。而对于后台的PHP来说有两个相对应的编码解码函数:urlencode用于编码,urldecode用于解码。现在看下列两段代码,先给个PHP代码:
<?php
$myStr1 = '我是中国人';
$myStr2 = urlencode($myStr1);
echo $myStr1 . '<br />';
echo $myStr2 . '<br />';
echo urldecode($myStr2) . '<br />';
?>
上面这段php代码会输出:
我是中国人
%E6%88%91%E6%98%AF%E4%B8%AD%E5%9B%BD%E4%BA%BA
我是中国人
再来看JS代码:
var myStr1 = '我是中国人';
var myStr2 = encodeURIComponent(myStr1);
document.write(myStr1);document.write('<br />');
document.write(myStr2);document.write('<br />');
document.write(decodeURIComponent(myStr2));
上面这段JS代码会输出:
我是中国人
%E6%88%91%E6%98%AF%E4%B8%AD%E5%9B%BD%E4%BA%BA
我是中国人
和上面PHP代码输出的内容是一样的。
不对吧,
php的urlencode和js的encodeURIComponent在处理符号上 机制不同的,
如感叹号、空格等
@Tony
试了下果然如此:对于半角空格来说,PHP的urlencode输出“+”,而JS的encodeURIComponent输出“%20”;对于半角“!”来说,PHP的urlencode输出“%21”,而JS的encodeURIComponent仍然输出“!”。谢谢你的指正:)