2013-04-11 110 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,但它是可选的。)