json_encode - 参数中的UTF-8序列无效

时间:2015-10-07 18:21:46

标签: php

我遇到了json_encode的问题。我得到了

$('#list li:eq(2)').addClass('myClass');

然后我在php.ini中设置了magic_quotes_gpc = 0(之前是1)并且它停止显示json_encode错误。

现在,我又开始遇到同样的错误了。 php.ini中magic_quotes_gpc为0。我使用的是PHP 5.3

我发现很多答案都说将其转换为UTF-8。但我无法做到,因为我在许多地方使用json_encode并且无法改变所有。

我想解决root问题,这样我就不需要更改json_encode代码了。

在MySQL中,

的结果
 $(document).ready(function(){
      $('.your-class').slick({
        infinite: true
      });
    });

PHP Warning:  json_encode() [<a href='function.json-encode'>function.json-encode</a>]: Invalid UTF-8 sequence in argument in /var/www/html/web/example.php on line 500

json_encode错误的原因是什么?

我正在使用zend服务器,我在zend服务器日志中看到这个json_encode错误。

我注意到的另一件事是,即使我在服务器日志中看到错误,它也正确地将数组转换为json。

将数组转换为json时没有错误。那为什么我在zend服务器上看到错误?

2 个答案:

答案 0 :(得分:1)

尝试在连接参数后添加以下说明:

mysql_set_charset('utf8');

结果值为:

mb_convert_encoding($result,'UTF-8','UTF-8');

答案 1 :(得分:1)

json_encode()需要有效的UTF-8数据作为输入。

您正在向它提供无效数据。

根据您的描述,您可能从数据库连接中获取latin1数据,这会导致json_encode()窒息。

将脚本中的数据库连接设置为UTF-8。如何做到这取决于您使用的数据库库。

以下列出了在最常见的库中切换到UTF-8的方法: UTF-8 all the way through