【发布时间】:2013-04-24 07:11:07
【问题描述】:
我正在尝试将导入的 IPTC 元数据从图像自动转换为 UTF-8 以存储在基于 PHP mb_ 函数的数据库中。
目前看起来是这样的:
$val = mb_convert_encoding($val, 'UTF-8', mb_detect_encoding($val));
但是,当 mb_detect_encoding() 提供一个 ASCII 字符串(Latin1 字段中从 192-255 的特殊字符)时,它会将其检测为 UTF-8,因此在以下尝试将所有内容转换为正确的 UTF-8 所有特殊字符字符被删除。
我尝试通过查找 Latin1 值来编写自己的方法,如果没有出现,我将继续让 mb_detect_encoding 决定它是什么。但是当我意识到我不能确定其他编码不会对其他事物使用相同的字节值时,我中途停了下来。
那么,有没有办法正确检测 ASCII 以作为源编码提供给 mb_convert_encoding?
【问题讨论】:
-
给定一个字符串只能确定它是否不属于特定的编码。 mb_detect_encoding 函数将检查您的字符串并尝试“猜测”它的编码是什么。
-
那是什么? ASCII 还是 Latin-1?不可能两者兼而有之。另外,是编码变量,还是您知道编码?你能get一些元数据的编码吗? “检测”编码(阅读:最好的猜测)从来都不是一个好主意;编码需要指定。
标签: php string utf-8 ascii multibyte