2013-05-31 57 views
0

我在做數學,如果我將二進制表示(二進制模式下的二進制文件)中的每一點信息(變量的內容)保持在1字節或者等於1字節,我是安全的,無論是什麼endianess在平臺上實現,這意味着ASCII字符集根據定義是端到端安全的還是雙端的,因爲它提供了2^8個排列? 我想UTF-8並不是雙端的。是ASCII字符集endian-safe?

+0

Endianness沒有爲一個字節定義。而UTF-8既可以是小碼也可以是大碼(就像任何其他Unicode編碼一樣)。 – 2013-05-31 09:15:33

+3

你對utf-8是什麼感到困惑。 utf-8編碼的字符串是一個字節序列,不受字節序的影響。 http://en.wikipedia.org/wiki/UTF-8 –

+0

@ H2CO3 ** CAN **可以,但我的觀點是安全的,如果我有一個ASCII字符我可以假設字符總是被正確地重現,用UTF8我應該關心那個UTF字符集的實現。 – user2384250

回答

5

字節順序是指字節順序,即多字節順序的字節出現的順序。

對於ASCII而言,由於沒有多字節序列,因此它是沒有意義的。

對於UTF-8,UTF-8標準已經準確無誤地定義了所有多字節序列中的字節順序。因此需要額外的規則(如big-endian或little-endian)來指定或澄清此訂單。所以......也不適用。

+0

所以UTF8是安全的,不管是什麼?和UTF-16? – user2384250

+0

UTF-16使用固定大小(16位)的多字節代碼單元,因此如果適用,則使用字節序的概念。令人遺憾的是,Unicode協會選擇不強制標準的一個字節序或另一個序列字,因此我們剩下兩個UTF-16「變體」。這就是爲什麼[儘可能避免使用UTF-16]的原因之一(http://programmers.stackexchange.com/questions/102205/should-utf-16-be-considered-harmful)。 – Celada

+1

應該避免的另一個主要原因是它是「兩全其美」編碼:它是一種可變長度編碼(不像UTF-32/UCS-4,當你需要固定長度的代碼單元時,你應該使用它) )和ASCII不兼容(不像UTF-8,你應該在幾乎所有其他情況下使用它)。 – Celada