使用exif_read_data获取元数据表单图像时编码错误


Wrong encoding when getting metadata form image with exif_read_data

我正在使用exif_read_data功能从上传的图像中获取"评论"信息。我想将此信息插入到相应的图像"alt"标签中。插入的值如下所示:T r a v e l

我尝试了几种编码变体,但我无法获得正确的字符串。

.PHP:

$exif = exif_read_data($dir.$image , 0 ,true);
$rel  = $exif["IFD0"]["Comments"];

.HTML:

<img alt='$rel' src='test.jpg' />

输出:像这样的东西...

<img alt='T�r�a�v�e�l��� ' src='test.jpg' />

html 页面的实际编码是 UTF-8

<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
我不知道

是否能解决您的问题(如果是,请在此处告诉我)。但是在 php.net 有一个注释,带有一个php.ini配置来设置exif编码:

<?php
ini_set('exif.encode_unicode', 'UTF-8');
?>
这对

我有用:显然,如果您在Windows中设置exif注释/描述字段,则编码将自动设置为ASCII(您可以按照注释中的建议与detect_encoding一起检查)。由于 ASCII 是 utf8 的子集,因此您只需使用:

$rel  = utf8_encode($exif["IFD0"]["Comments"]);

解决方案是:$exif = $exif['WINXP']['Comments'];