在 Java JDK 9 上定义以下字符串时 字符串 s = "एक गाव में एक किसान" 它抛出以下错误: 用于编码 US-ASCII 的不可映射字符 (0xE0) 我知道它是 UTF-8 编码的,但由于 JDK 9 将默认字符集设置为 US-ASCII,但我找不到如何从代码本身将默认字符集更改为 UTF-8?
最佳答案
I want to change the default charset from within the code
不可能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。
关于Java编码问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59182527/