偶尔我会从我的网站用户上传照片时得到PHP错误,而当我随后尝试json_encode
它时,EXIF数据不是有效的UTF-8。我得到的具体错误是:试图理解exif.encode_unicode
E_WARNING: json_encode(): Invalid UTF-8 sequence in argument
这是由下面的代码的最后一行产生的。
ini_set('exif.encode_unicode', 'UTF-8');
$exif_data = exif_read_data($uploader_target_dir . $_POST['uploader_' . $i . '_tmpname']);
$when_photo_taken = isset($exif_data['DateTime']) ? (int)strtotime($exif_data['DateTime']) : 0;
$exif_data = (json_encode($exif_data));
正如你所看到的,我设置exif.encode_unicode
选项UTF-8
,虽然我不是100%肯定这是什么一样(这句话“exif.encode_unicode定义注释被处理的UNICODE用户”在手册中对我来说似乎很模糊/令人困惑),但是无论如何它没有解决问题。
有谁知道这个配置选项到底是什么吗?或者是什么导致我的E_WARNING
?
谢谢你的出色答案。使用上面的片段,我能够确定问题是由于尝试对“MakerNote”EXIF标记进行JSON编码而导致的,因为在大多数情况下,该进一步调查不适用,因为内容是专有的二进制格式。 – Alex