2016-02-29 215 views

回答

8

getBytes()使用系統的默認字符集,這意味着基本上所有的投注都關閉。它可能是big-endian UTF-16,little-endian UTF-16,UTF-8,ISO-8859-1 ......基本上都是。

如果您需要指定字節序的字節順序或任何字符,請使用getBytes(Charset)getBytes(String)。有一個支持所有JRE的few standard charsets--包括UTF_16BE(big endian)和UTF_16LE(little endian)。

+0

我對使用UTF-8'String.getBytes(StandardCharsets.UTF_8)'是否決定字節序方式有些疑惑嗎? – LoranceChen

+3

UTF-8沒有字節序。你可以閱讀更多[這裏](http://stackoverflow.com/questions/3833693/isn-t-on-big-endian-machines-utf-8s-byte-order-different-than-on-little-endian) ,但基本上,如果在同一個單詞中同時讀取多個字節,字節順序就很重要。 UTF-8被定義爲只是一個字節流,沒有多字節字;即使是需要多個字節的代碼點也是以多個1字節的字來定義的。所以作爲一個讀寫器,你只需要處理「下一個字節,下一個字節,下一個字節」,在這種情況下,字節序不是一個因素。 – yshavit

+0

@LoranceChen UTF-8定義字節爲多字節字符編碼顯示的順序。這不是真正的小或大端。 –