使用PHP的iconv()
函数时,我遇到了一个奇怪的情况。我有一个MySQL数据库,其中包含几个包含法语(和其他欧洲语言)字符的记录。例如:
Saint-Côme-du-Mont
我正在尝试编写一个函数来将这些转换为友好的网址,然后转向iconv()
。问题是,如果我使用音译功能,我会收到以下错误:
Notice: iconv(): Detected an illegal character in input string in...
产生问题的代码是:
$url = iconv("utf-8", "us-ascii//TRANSLIT", $string); // TRANSLIT does the whole job
但是,如果我使用//IGNORE
,我会得到以下输出:
Saint-Cme-du-Mont
MySQL中的字段使用``collation,并以纯文本格式存储。我已尝试使用utf8_encode()
,但存在相同的行为。
如果我在输入字符串上使用mb_detect_encoding()
,我会得到UTF-8
,因此它似乎正在以正确的格式接收字符串。
我如何规避通知,仍然执行translit操作?