【发布时间】:2018-08-18 19:58:14
【问题描述】:
所以我在foreach 中使用glob() 函数来渲染我网站上文件夹中的图像,并且我想在其中有标题,所以我将标题放在该图像的元数据中,但是当我执行这些元数据时通过 exif_read_data() 的数据它不会在 utf-8 中执行,它显示 POL`T?XE this 而不是这个 POLŠTÁŘE。
这是我尝试解决此问题的代码
header("Content-Type: text/html; charset=utf-8");
ini_set('exif.encode_unicode', 'UTF-8');
iconv_set_encoding('input_encoding', 'UTF-8');
iconv_set_encoding('output_encoding', 'UTF-8');
iconv_set_encoding('internal_encoding', 'UTF-8');
$dirs = array_filter(glob('img/*'), 'is_dir');
foreach ($dirs as $dir) {
$files = glob($dir.'/*.{jpg,png,JPG,PNG,jpeg,JPEG}', GLOB_BRACE);
foreach($files as $file) {
$meta_data = exif_read_data($file, 0, true);
echo '
<img src="'.$file.'" title="'.$meta_data['IFD0']['Title'].'" />
';
}
}
即使我使用 exiftools,它也没有任何效果。
甚至没有utf8_encode(),甚至没有mb_convert_encoding($meta_data['IFD0']['Title'], 'UTF-8')。
当我使用这个mb_detect_encoding() 函数时,它执行了UTF-8。
我尝试使用 exiftool 将编码设置为 utf-8,但它也不起作用。你能帮帮我吗?
【问题讨论】:
-
询问时,您应该展示一个显示您的问题的最小程序。由于您的问题不是全局问题,因此这里无关紧要。文件中的数据是什么格式的。
-
你指的是什么数据?
-
根据您的问题,标题显示不正确。文件中的标题是用什么编码保存的?
-
它在该图像的元数据中,我认为即使 exiftools 正确显示它也是 utf-8。
-
这种假设可能是错误的。 PHP 函数比 exiftools 之类的程序更容易获取原始数据。
标签: php html encoding utf-8 exif