2013-04-11 104 views
-1

是UTF-8與ASCII不一樣嗎?你如何解釋不同的結果我得到:轉換編碼在PHP中不轉換ASCII和UTF-8之間

$result = mb_detect_encoding($PLAINText, mb_detect_order(), true); 

有時候我「UTF-8」在$ result中得到,有時我得到「ASCII」。所以他們是不同的,但那不是我的問題,我的問題是爲什麼iconv()代碼不能從ASCII轉換爲UTF-8?

$result = iconv("ASCII","UTF-8//IGNORE",$PLAINText); 

我檢查$結果編碼以後使用mb_detect_encoding()函數,它仍然是 「ASCII」,而不是 「UTF-8」。

+1

*「我知道UTF-8與ASCII幾乎相同」* - 什麼?一定不行。推薦閱讀:http://www.joelonsoftware.com/articles/Unicode.html – Tomalak 2013-04-11 07:15:14

+0

謝謝,我編輯帖子,以免人們誤會。那麼爲什麼iconv()不會從ASCII轉換爲UTF-8? – Rodniko 2013-04-11 07:56:38

+1

它的UTF-8和ASCII一樣,他們稱之爲ASCII。恰好發生的是,ASCII的127個字符在UTF-8中具有相同的字節值。你讀過我鏈接的文章嗎? – Tomalak 2013-04-11 08:09:03

回答

1

原因是,在UTF-8字符串中只使用ASCII字符時,UTF-8字符串與ASCII字符串無法區分。 (除非使用byte order mark,但它是可選的。)