【发布时间】:2013-01-26 16:43:18
【问题描述】:
出于索引和搜索的目的,我需要“展平”一些 Unicode 字符串。例如,我需要将GötheФ€ 转换为ASCII。最后两个字符在 ASCII 中没有紧密的表示,因此可以完全丢弃它们。所以我的期望是什么
echo iconv("UTF-8", "ASCII//TRANSLIT//IGNORE", "GötheФ€");
是Gothe,但它输出Gothe?EUR。
除了字母之外,我还希望将各种 Unicode 数字和标点符号(例如句点、逗号、破折号、斜杠等)替换为最接近的 ASCII 对应物,这是 ASCII//TRANSLIT//IGNORE in iconv 函数已经完成但并非没有为无法找到任何 ASCII 替换的 Unicode 字符产生一些垃圾输出。我希望完全忽略这些字符。
如何得到预期的结果?有没有更好的方法,也许使用intl 库?
【问题讨论】:
-
可能的欺骗,从 Unicode 中删除变音符号:stackoverflow.com/questions/3542717/…
-
@EricLeschinski 不仅仅是变音符号。例如,右斜杠至少有 4 个 Unicode 字符(
002F、0338、2044、2215),我希望它们都变成002F。 -
我想知道 - 为什么有人在 2013 年需要 ASCII?使用 UTF-8..
标签: php unicode character-encoding iconv transliteration