默认编码和更改

时间:2013-10-10 14:13:38

标签: java unicode encoding utf-8

默认情况下,CharacterString使用UTF-16,但是,出于所有实际目的,在北美和大多数英语语言环境中,UTF-8就足够了(因为它可以达到4字节)。那么,如果我使用InputStreamReader(InputStream),那么它是否会为我提供默认的UTF-16 char编码?使用InputStreamReader(InputStream, "UTF-8")将提供UTF-8编码,这足以满足我的目的。

如何在使用英语语言环境时自动将JVM的默认编码设置为UTF-8?目的是提高CharacterString操作的性能(通过使用8位方案而不是16位编码,大多数ASCII使用8位编码覆盖,同时符合Unicode标准)。

任何评论都表示赞赏。谢谢!

2 个答案:

答案 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"")

Here is a useful article with more details.