2012-06-09 69 views
0

從物理字節流的角度來看,對於使用UTF8存儲的每個文件,我認爲UTF8 bomless與Cp1252完全相同,是這樣嗎?UTF8 Bomless vs Cp1252

+0

下面的UTF8字符串的CP1252相當於什麼? 'ϨϩϪϫϬ' – sarnold

+1

如果您只使用ASCII字符,那麼是的,它是相同的。如果您使用ASCII集外的字符,則完全不同。如果您需要更詳細的答案,我建議您閱讀http://en.wikipedia.org/wiki/Unicode和http://en.wikipedia.org/wiki/Utf8。 –

回答

6

肯定不是真的。如果你想使它成爲一個真實的語句,你需要添加子句「如果我只使用US-ASCII字符」。但那是一個巨大的「如果」。如果我們只使用US-ASCII字符,則很多編碼甚至不存在。許多編碼(包括UTF-8)確保所有US-ASCII字符都使用相同的單字節表示進行編碼。

0

否。不僅UTF-8覆蓋更大的字符集,而且代碼點U+7f上的任何Unicode字符都將由UTF-8中的多個字節和CP-1252中的單個字節編碼。 CP-1252和ISO-8859-1(也被稱爲Latin-1)之間有更密切的對應關係,但即使這些對應關係不大但重要。這種差異導致了許多最常見的編碼問題。

舉一個例子,一個左單引號由unicode代碼點U+2018表示。在CP-1252中,這被編碼爲字節0x91。這個字符在Latin-1中根本不存在,而在UTF-8中,它由三字節序列0xe28098編碼。更一般地說,可以說Latin-1和UTF-8是基於Unicode的編碼,因爲所有的編碼都可以在算法上映射到unicode編碼點,並且將表示該字符,而CP-1252是非基於unicode的編碼。用於表示字符的字節與其unicode代碼點之間沒有固定的對應關係。