我有一个包含Unicode和ASCII字符的字符串。
我可以使用utf8_decode
将ASCII转换为Unicode字符,但它也会将Unicode转换为Unicode字符。如何在混合字符串中仅过滤或转换ASCII字符为Unicode?
例如:
utf8_decode(& #225; rỉ);
~> á rỉ
有两件事情。ASCII 字符是 7 位的,范围从 0x00 到 0x7F。因此,如果你有一个 Unicode 字符串,ASCII 字符不需要被转换,因为它们在 Unicode 中是相同的...
现在,你的 á 是 0xE1,因此它不是 ASCII 而是 ISO Latin 1
。而且你不能在一个字符串中有两种编码方式(否则你就遇到麻烦了...)。所以你需要把 ISO Latin 1 转换成 UTF-8。
你可以使用$string = iconv('ASCII//TRANSLIT','UTF-8', $string);