【发布时间】:2019-12-04 18:24:16
【问题描述】:
在 Java JDK 9 上定义以下字符串时 字符串 s = "एक गाव में एक किसान" 它抛出以下错误: 用于编码 US-ASCII 的不可映射字符 (0xE0) 我知道它是 UTF-8 编码的,但由于 JDK 9 将默认字符集设置为 US-ASCII,但我找不到如何将默认字符集从代码本身更改为 UTF-8?
【问题讨论】:
-
这能回答你的问题吗? Setting the default Java character encoding
-
不,我想从代码中更改默认字符集
-
Unfortunately, the file.encoding property has to be specified as the JVM starts up在答案中 -
有没有我将用户输入以字节为单位并转换成 utf-8 格式的字符串?
-
有 2 个不同的问题:源编码和代码中 IO 操作的编码。当您以非默认编码编写了一些 .java 文件时,您必须说明 java 编译器应该使用什么编码来读取源以正确解析它们。第二个问题是您如何在代码中读取/写入数据。它也使用默认编码,但是有很多特定的方法可以使用显式编码来读取/写入数据,例如: InputStreamReader(InputStream in,String charsetName), OutputStreamWriter(OutputStream out,String charsetName), String(byte[] bytes, String字符集名称)等。