PHP - 将混合字符串中的ASCII转换为Unicode

3

我有一个包含Unicode和ASCII字符的字符串。

我可以使用utf8_decode将ASCII转换为Unicode字符,但它也会将Unicode转换为Unicode字符。如何在混合字符串中仅过滤或转换ASCII字符为Unicode?

例如:

utf8_decode(& #225; rỉ);
~> á rỉ
3个回答

4

有两件事情。ASCII 字符是 7 位的,范围从 0x00 到 0x7F。因此,如果你有一个 Unicode 字符串,ASCII 字符不需要被转换,因为它们在 Unicode 中是相同的...

现在,你的 á 是 0xE1,因此它不是 ASCII 而是 ISO Latin 1。而且你不能在一个字符串中有两种编码方式(否则你就遇到麻烦了...)。所以你需要把 ISO Latin 1 转换成 UTF-8。


如何将ISO Latin 1转换为UTF-8? - Pete

1

á 不是 ASCII 字符。ASCII 字符集表

您也可以尝试这个。

echo mb_convert_encoding('á rỉ', "UTF-8", "UTF-8");

-1

你可以使用$string = iconv('ASCII//TRANSLIT','UTF-8', $string);


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接