在Java中,如果我使用OutputStreamWriter
的字符集创建UTF-16
,则Java是否规定了默认的字节序(UTF-16BE
或UTF-16LE
),或者默认值取决于底层操作系统。
注意:我已经看到其他人声称默认值为UTF-16BE
,并引用了Charset
API documentation,但是我对上述文档的解释是,它适用于对没有BOM的UTF-16输入流的解释,并且对在没有指定字节序的情况下使用UTF-16的OutputStreamWriter
的必需行为(如果有)。
最佳答案
该文档指定使用UTF-16:
解码时,UTF-16字符集将解释输入流开头的字节顺序标记以指示流的字节顺序,但是如果没有字节顺序标记,则默认为big-endian;编码时,它使用big-endian字节顺序并写入一个big-endian字节顺序标记。