Java编码问题

Java编码问题,java,encoding,ascii,Java,Encoding,Ascii,在Java JDK 9上定义以下字符串时 字符串s=”एक गाव में एक किसान" 它抛出以下错误: 用于编码US-ASCII的不可映射字符(0xE0) 我知道它是UTF-8编码的,但由于JDK 9的默认字符集为US-ASCII,但我找不到如何从代码本身将默认字符集更改为UTF-8 我想更改代码中的默认字符集 不可能的1 源代码只是文本,它没有定义用于存储该文本的编码 但是,您可以通过将所有非ASCII字符指定为Unicode转义来确定源代码是US-ASCII,因此编码无关紧要(UT

在Java JDK 9上定义以下字符串时 字符串s=”एक गाव में एक किसान" 它抛出以下错误: 用于编码US-ASCII的不可映射字符(0xE0) 我知道它是UTF-8编码的,但由于JDK 9的默认字符集为US-ASCII,但我找不到如何从代码本身将默认字符集更改为UTF-8

我想更改代码中的默认字符集

不可能的1

源代码只是文本,它没有定义用于存储该文本的编码

但是,您可以通过将所有非ASCII字符指定为Unicode转义来确定源代码是US-ASCII,因此编码无关紧要(UTF-16、UTF-32等除外):

String s = "\u090f\u0915 \u0917\u093e\u0935 \u092e\u0947\u0902 \u090f\u0915 \u0915\u093f\u0938\u093e\u0928"
当然,这让我们很难知道字符串是怎么说的

1) 因为Java不支持BOM

我想更改代码中的默认字符集

不可能的1

源代码只是文本,它没有定义用于存储该文本的编码

但是,您可以通过将所有非ASCII字符指定为Unicode转义来确定源代码是US-ASCII,因此编码无关紧要(UTF-16、UTF-32等除外):

String s = "\u090f\u0915 \u0917\u093e\u0935 \u092e\u0947\u0902 \u090f\u0915 \u0915\u093f\u0938\u093e\u0928"
当然,这让我们很难知道字符串是怎么说的


1) 由于Java不支持BOM。

这是否回答了您的问题?不,我想更改代码
中的默认字符集。不幸的是,JVM启动时必须指定file.encoding属性。
答案中是否有以字节为单位的用户输入,并将其转换为utf-8格式的字符串E2不同的问题:源代码的编码和代码中IO操作的编码。当您以非默认编码编写一些.java文件时,您必须说明java编译器应该使用什么编码来读取源代码以正确解析它们。第二个问题是如何在代码中读/写数据。它也使用默认编码,但re是许多使用显式编码读取/写入数据的特定方法,如:InputStreamReader(InputStream in,String charsetName)、OutputStreamWriter(OutputStream out,String charsetName)、String(byte[]bytes,String charsetName)等等。这是否回答了您的问题?不,我想更改代码
中的默认字符集。不幸的是,JVM启动时必须指定file.encoding属性
答案中是否有以字节为单位的用户输入并转换为utf-8格式的字符串?有两个不同的问题:sourc的编码在您的代码中为IO操作创建和编码。当您以非默认编码编写了一些.java文件时,您必须说明java编译器应该使用什么编码来读取源代码以正确解析它们。第二个问题是如何在代码中读/写数据。它也使用默认编码,但有许多特定的读取方法/使用显式编码写入数据,如:InputStreamReader(InputStream in,String charsetName)、OutputStreamWriter(OutputStream out,String charsetName)、String(byte[]bytes,String charsetName)等。