(Intellij) "unclosed character literal" 和 "illegal character '\u00a7'" 编译时

(Intellij) "unclosed character literal" and "illegal character '\u00a7'" when compiling

我正在尝试将“§”字符编译成字符 (char c = '§'),但是当我尝试构建时,它在构建输出中显示“Unclosed character literal”和“Illegal character: '\u00a7'”,然后又是“Unclosed character literal”。如果我将字符放入字符串 (String s = "§") 中,它就可以正常工作。但是当我将它打印到控制台时,它会打印 'Â' 字符(它不应该)

在另一个java项目中,我可以正常使用'§'字符并正常编译,并且按预期工作;将它打印到控制台什么都不显示(这是正常的,因为它被用作为文本着色的转义字符)。该项目(和当前项目)在 intellij 中不使用“BOM”,它们都使用 UTF8 编码

有谁知道如何解决这个问题?谢谢:)

使用Java的字符:https://docs.oracle.com/javase/7/docs/api/java/lang/Character.html

可以通过charValue()获取字符。

此外,请确保您使用的编码方案(例如 UTF-16)支持您的角色。

如何重现该错误:

  • 使用 UTF-8 编码(默认)创建了一个新的 Test.java
  • char c = '§'; 添加了 main 并打印它
  • 运行 Test.main()

没有错误,符合预期。


所以我尝试了:

  • 创建了第二个文件 Test1.java 并更改为 ISO-8859-1 编码
  • 添加了仅包含打印命令的 main 方法
  • 运行 Test1.java

这次我得到了报告的错误,但是 Test.java(仍然编码为 UTF-8)

看起来 IDEA 对整个源代码使用了第一个文件的编码。


解决方案:

  • 确保所有文件都使用 UTF-8 编码; and/or
  • javac -encoding UTF-8 ...用作 by saka1029