php与javascript编码json时,中文或标点乱码问题及解决方法

json.jpg

引言

本文将介绍 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

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

*

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>