json抛出无效的UTF-8序列


json throwing an invalid UTF-8 sequence

我有一个ec2服务器,php 5.3和2个虚拟主机:1个开发和1个生活。

在dev上,如果有人上传了一个错误的UTF-8文件,它会忽略这个错误,并且它只是不转换变量。

在运行的主机上,它抛出这个错误并停止php脚本:

消息:json_encode(): Invalid UTF-8 sequence in argument.

我在同一台服务器上得到混合结果的任何原因?

选项1:

也许你在dev上没有错误报告,但是你在live上有。要测试这个理论,你所需要做的就是关闭error_reporting。

error_reporting(0);
ini_set('display_errors', 0);

选项2:

您可以尝试使用mb_convert_encoding()自动将"文件"转换为UTF-8。

$file = mb_convert_encoding($file, 'UTF-8');
echo json_encode($file);