默认情况下,Character
和String
使用UTF-16,但是,出于所有实际目的,在北美和大多数英语语言环境中,UTF-8就足够了(因为它可以达到4字节)。那么,如果我使用InputStreamReader(InputStream)
,那么它是否会为我提供默认的UTF-16 char
编码?使用InputStreamReader(InputStream, "UTF-8")
将提供UTF-8编码,这足以满足我的目的。
如何在使用英语语言环境时自动将JVM的默认编码设置为UTF-8?目的是提高Character
和String
操作的性能(通过使用8位方案而不是16位编码,大多数ASCII使用8位编码覆盖,同时符合Unicode标准)。
任何评论都表示赞赏。谢谢!
答案 0 :(得分:4)
java,char,Character和String中的文本的内存数据类型是UTF-16。绝对。总是。无条件。
唯一可以改变的是Java如何从外部字节转换为内部字符。没有办法将表示更改为UTF-8来换空间。
答案 1 :(得分:1)
所以,如果我使用InputStreamReader(InputStream),它会给我 默认的UTF-16字符编码?使用InputStreamReader(InputStream, “UTF-8”)将提供UTF-8编码,这足以满足我的要求 目的
如何在使用时自动将JVM的默认编码设置为UTF-8 英语语言环境?
来自InputstreamReader
java DOC:
InputStreamReader使用的字符集可以通过名称或指定 可以明确地给出,或者平台的默认字符集可能是 接受强>
就像我尝试使用reader.getEncoding()
在我的平台上打印一样;它打印UTF-8
。 Java在JVM启动时调用System.getProperty("file.encoding")
来获取字符编码。因此,如果Java没有获得任何file.encoding属性,它会使用"UTF-8"
字符编码用于所有实际目的。但是,要将编码设置为JVM实例,可以使用System.setProperty("file.encoding, "UTF-16"")
。