You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP中iptcparse()解析IPTC元数据特殊字符乱码及JSON编码问题

解决IPTC元数据特殊字符乱码及UTF-8兼容问题

我使用一张测试图片执行以下PHP代码读取IPTC元数据:

getimagesize("sample.jpg", $image_info);
if (isset($image_info["APP13"])) {
    $iptc = iptcparse($image_info["APP13"]);
    var_dump($iptc);
}

浏览器输出中的版权符号被替换成了�,显示内容为:� Copyright 2020 IPTC (Test Images) - www.iptc.org。我需要确保特殊字符不出现乱码,且最终要将该数组通过json_encode()处理,担心这些乱码字符会引发问题。


更新1:
按照建议使用utf8_encode递归处理数组,添加了以下代码:

array_walk_recursive($iptc, function (&$entry) {
    $entry = utf8_encode($entry);
});

版权符号的乱码问题得到解决,但在iptcparse返回结果的["2#000"][0]索引中出现了\u0000\u0004字符,推测这与IPTC规范相关,目前正在排查原因。

更新2:
由于utf8_encode()已被废弃,我尝试在脚本中添加ini_set('default_charset', 'UTF-8');,但没有效果;将array_walk_recursive中的处理逻辑改为mb_convert_encoding($entry, 'UTF-8'),同样无法解决问题。


内容的提问来源于stack exchange,提问作者StackOverflowNewbie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 04:40:25