引言
本文将介绍 PHP 利用 json 向 javascript 传递数据时,存在的中文或特殊字符的乱码问题的解决方法。
正文部分
问题1
中文字符在PHP下,利用 json_encode 函数进行编码时,返回结果为NULL;
解决方法
将中文字符重新编码;
$cn_encode_str = urlencode($cn_utf8_str);
再用 javascript 解码即可。
cnStr = decodeURI(cnEncodeStr);
问题2
GB2312编码的中文字符无法正确解码显示;
解决方法
在php中,使用iconv函数将gb2312转换为utf-8编码;
$cn_utf8_str = iconv("gb2312", "utf-8", $cn_gb2312_str);
问题3
javascript 中的 decodeURI 函数没有解码部分标点符号,如<>&;等;同理,encodeURI 也不会对这些字符进行编码;
解决方法
使用 javascript 中的另外一个函数 decodeURIComponent 来进行解码;
cn_str = decodeURIComponent(cn_encode_str);
问题4
PHP 使用 urlencode 之后,生成了多余的+;
解决方法
使用 rawurlencode 函数,或者使用 str_replace 函数将+替换掉;
//方法1
$cn_encode_str = rawurlencode($cn_utf8_str);
//方法2
$cn_encode_str = str_place("+", "", urlencode($cn_utf8_str));
总结
以上就是在这次写一个小的ajax交互效果时,碰到的问题和解决方法。
同时,在搜集和解决问题时,也发现了一些好东西,在这里分享给大家。
技术这门东西,还是要多用才熟悉。
分享
http://phpjs.org/functions/index
将php中的一些高级函数引入 javascript 中的一个网站。简单说,就是用PHP方式来书写 javascript。

站内搜索
6 Comments