【发布时间】:2011-10-28 16:07:35
【问题描述】:
我目前正在尝试从 UTF-8 字符串中删除所有特殊字符和重音符号,如果可能的话,将它们转换为等效的 ASCII 字符。
所以我只是使用这段代码:
$result = iconv('UTF-8', 'ASCII//TRANSLIT//IGNORE', $input);
问题在于,例如“début”这个词变成了“dbut”而不是“debut”。 为了让它工作,我需要添加一个对 setlocale 的调用,如下所示:
setlocale(LC_ALL, 'en_US.UTF8');
$result = iconv('UTF-8', 'ASCII//TRANSLIT//IGNORE', $input);
我不明白为什么。我认为 UTF-8 和 ASCII 总是相同的,无论你使用什么语言环境。
编辑:我不是说 UTF-8 等于 ASCII,我的意思是 UTF-8 总是等于 UTF-8 而 ASCII 总是等于 ASCII
【问题讨论】:
-
ASCII 和 UTF-8 不一样。 UTF-8 要大几个数量级。