我正在尝试消除脚本中的警告和通知。该脚本包括以下内容:
$clean_string = iconv('UTF-8', 'UTF-8//IGNORE', $supplier.' => '.$product_name);
据我了解,这一行的目的,正如脚本的原作者所期望的那样,是从字符串中删除非 UTF-8 字符,但显然输入中的任何非 UTF-8 字符都会导致 iconv抛出非法字符警告。
为了解决这个问题,我的想法是执行以下操作:
$clean_string = iconv(mb_detect_encoding($supplier.' => '.$product_name), 'UTF-8//IGNORE', $supplier.' => '.$product_name);
然而奇怪的是,mb_detect_encoding()UTF-8
作为检测到的编码返回!
带有重音符号 ( é
) 的字母 e 是导致此行为的字符示例。
我意识到我在检测和转换之间混合了多字节库,但是我在 iconv 库中找不到编码检测功能。
我考虑过使用 mb_convert_encoding() 函数将字符串清理为 UTF-8,但 PHP 文档不清楚无法表示的字符会发生什么。
我正在使用 PHP 5.2.17,并使用 glibc iconv 实现,库版本 2.5。
谁能提供有关如何将字符串清理为 UTF-8 的任何建议,或者深入了解为什么会发生这种行为?