问题:Ajax提交的数据的编码为utf-8,并且返回的数据也要求是utf-8的,如果说你的系统不是utf-8编码的话,那会让你痛不欲生!
解决方法:(比较笨拙的方法,但是很好用)
对于接收的数据,使用mb_convert_encoding()方法进行转码:
mb_convert_encoding($receiveData, 'GBK', 'UTF-8');
对于返回的数据,同样使用mb_convert_encoding()方法进行转码:
mb_convert_encoding($rebackData, 'UTF-8', 'GBK');
关键:此处为什么不用iconv()方法进行转码,而用mb_convert_encoding()进行转码?
这是因为iconv()方法存在缺陷,如果遇到一些特别字符时,如:"—",英文名中的"."等等字符,转换就断掉了。这些字符后的文字都没法继续转换了。
个人建议碰到转码问题时采用mb_convert_encoding比较保险。
补充:json_encode函数对中文支持很恶心,只能是UTF-8编码,那么大部分老系统使用其他编码(GBK,GB2312),json_encode去转换数组/对象成为JSON对象都会变成空!