方法String.getBytes()是big endian还是litter endian?

Lor*_*hen 5 java jvm endianness

我需要将String发送到客户端套接字,对于正确的序列,endian很重要,但我没有看到源代码中的endian信息.它不需要关心或者我只是跳过这些代码吗?

ysh*_*vit 9

getBytes()使用系统的默认字符集,这意味着基本上所有的赌注都是关闭的.它可能是大端UTF-16,小端UTF-16,UTF-8,ISO-8859-1 ......基本上都是.

如果你需要指定字节顺序或关于字符集的任何内容,你应该使用getBytes(Charset)getBytes(String).这里有几个标准的字符集,所有的JRE支持-包括UTF_16BE(大端)和UTF_16LE(小端).

  • 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字节字来定义的.因此,作为读写器,您只需要处理"下一个字节,下一个字节,下一个字节",在这种情况下,字节顺序不是一个因素. (4认同)