4
我需要發送字符串到客戶端套接字,對於正確的序列,endian很重要,但我沒有在源代碼中看到endian信息。它不需要關心或只是我跳過了這些代碼?方法String.getBytes()是大端序還是小端序?
我需要發送字符串到客戶端套接字,對於正確的序列,endian很重要,但我沒有在源代碼中看到endian信息。它不需要關心或只是我跳過了這些代碼?方法String.getBytes()是大端序還是小端序?
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)。
我對使用UTF-8'String.getBytes(StandardCharsets.UTF_8)'是否決定字節序方式有些疑惑嗎? – LoranceChen
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
@LoranceChen UTF-8定義字節爲多字節字符編碼顯示的順序。這不是真正的小或大端。 –