我有json_encode问题。我得到
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
然后我在php.ini中设置magic_quotes_gpc = 0(之前是1),它停止显示json_encode错误。
现在,我又开始得到同样的错误。php.ini中的Magic_quotes_gpc为0。我使用PHP 5.3
我发现很多答案都说要转换为UTF-8。但我不能这样做,因为我在许多地方使用json_encode和改变所有是不可能的。
我想解决根本问题,这样我就不需要改变json_encode代码。
在MySQL中, 的结果SHOW VARIABLES LIKE 'character_set%';
character_set_client latin1
character_set_connection latin1
character_set_database latin1
character_set_filesystem binary
character_set_results
character_set_server latin1
character_set_system utf8
character_sets_dir /usr/share/mysql/charsets/
json_encode错误的原因是什么?
我正在使用zend服务器,我在zend服务器日志中看到这个json_encode错误。
我注意到的另一件事是,即使我在服务器日志中看到错误,它也可以正确地将数组转换为json。
将数组转换为json没有错误。那么为什么我在zend服务器中看到错误?
json_encode()
需要有效的UTF-8数据作为输入。
你正在输入无效的数据。
根据您的描述,您可能从数据库连接中获得latin1
数据,这将导致json_encode()
阻塞。
将脚本中的数据库连接设置为UTF-8。如何做到这一点取决于您正在使用的数据库库。
下面是在最常见的库中切换到UTF-8的方法列表:UTF-8一直到
尝试在连接参数后添加以下说明:
mysql_set_charset('utf8');
对于结果值:
mb_convert_encoding($result,'UTF-8','UTF-8');