5

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

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

任何意见表示赞赏。谢谢!

4

2 回答 2

4

java 中文本、char、Character 和 String 的内存数据类型是 UTF-16。绝对地。总是。无条件的。

唯一可以更改的是 Java 如何从外部字节转换为内部字符。无法将表示更改为 UTF-8 以换取时间。

于 2013-10-10T14:34:22.730 回答
1

那么,如果我使用 InputStreamReader(InputStream),那么它会给我默认的 UTF-16 字符编码吗?使用 InputStreamReader(InputStream, "UTF-8") 将提供 UTF-8 编码,这足以满足我的目的。

如何在使用英语语言环境时将我的 JVM 的默认编码自动设置为 UTF-8?

来自InputstreamReaderjava 文档:

InputStreamReader 使用的字符集可以由名称指定,也可以显式给出,或者可以接受平台的默认字符集

就像我尝试在我的平台上使用reader.getEncoding(); 它打印UTF-8System.getProperty("file.encoding")Java 通过在 JVM 启动时调用来获取字符编码。因此,如果 Java 没有获得任何 file.encoding 属性,它会"UTF-8"出于所有实际目的使用字符编码。但是,要将编码设置为 JVM 实例,可以使用System.setProperty("file.encoding, "UTF-16"").

这是一篇有用的文章,其中包含更多详细信息。

于 2013-10-10T14:21:24.470 回答