使用exif_read_data获取元数据时,编码错误

时间:2013-09-16 11:08:10

标签: php html encoding

我使用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"/>

3 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

This worked for me: apparently if you set the exif comments/description fields in Windows the encoding will be automatically set to ASCII (you can check this with detect_encoding, as suggested in the comments). As ASCII is a subset of utf8 you can just use:

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

答案 2 :(得分:-1)

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