我定義了一個Unicode字符作爲一個字節數組:以字節爲單位的Unicode字符長度 - 總是一樣嗎?
private static final byte[] UNICODE_MEXT_LINE = Charsets.UTF_8.encode("\u0085").array();
目前字節數組長度爲3,是安全的假設數組的長度總是3跨平臺?
謝謝
我定義了一個Unicode字符作爲一個字節數組:以字節爲單位的Unicode字符長度 - 總是一樣嗎?
private static final byte[] UNICODE_MEXT_LINE = Charsets.UTF_8.encode("\u0085").array();
目前字節數組長度爲3,是安全的假設數組的長度總是3跨平臺?
謝謝
該特定字符的長度總是3個字節,但其他字符會有所不同。 Unicode字符長度爲1-4字節。 'UTF-8'中的8只意味着它使用8位代碼單元。
該Wikipedia page on UTF-8提供了一個很好的概述如何工作。基本上,第一個字節的第一位告訴你該字符將有多長的字節長度。例如,如果第一個字節的第一位是0
,如01111111
,那麼這意味着這個字符只有一個字節長(在UTF-8中,這些是ASCII字符)。如果前中的第一位是110
,則表示該字符長度爲兩個字節。維基百科頁面中的圖表提供了一個很好的例子。
還有this question,它也有一些很好的答案。
它是安全的假設,特定字符將始終爲三個字節長,與平臺無關。
但UTF-8中的Unicode字符可以是一個字節,兩個字節,三個字節或甚至四個字節長,所以不能,如果您將任何字符轉換爲UTF-8,那麼它會來輸出爲三個字節。