2012-05-14 144 views
3

我有一個Unicode和ASCII字符的字符串。PHP - 在混合字符串中將ASCII轉換爲Unicode

我可以使用utf8_decode將ASCII轉換爲Unicode字符,但它也將unicode轉換爲unicode字符。如何在混合字符串中只將ASCII字符過濾或轉換爲Unicode?

例如:

utf8_decode(& #225; rỉ); 
~> á rỉ 

回答

3

兩件事。 ASCII字符是7位,0x00到0x7F。所以,如果你有一個Unicode字符串,ASCII字符不需要轉換,因爲它們在Unicode中是相同的... ...

現在,你的0x是0xE1,因此它不是ASCII碼,而是ISO Latin 1。而且你不能在一個字符串中使用兩種編碼(或者你在搗亂的時候......)。所以你需要將ISO Latin 1轉換爲UTF-8。

-1

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

+0

-1輸入不是'ASCII // TRANSLIT'。 – tripleee

1

á不是一個ASCII字符。 ASCII charset table

你也可以試試這個。

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