(智能) 编译时的"unclosed character literal"和"illegal character 'u00a7'"



我试图将'§'字符编译成字符(char c = '§'),但当我尝试构建时,它在构建输出中说"Unclosed character literal";和";Illegal character: 'u00a7'";后面跟着"Unclosed character literal";再一次。如果我把字符放入字符串(String s = "§"),它工作得很好。但是当我将它打印到控制台时,它打印了'Â'字符(它不应该)

在另一个java项目中,我可以很好地使用'§'字符并正常编译,并且它按预期工作;将它打印到控制台没有显示任何内容(这很正常,因为它被用作文本着色的转义字符)。那个项目(以及当前的项目)不使用"BOM"在intelllij中,它们都使用UTF8编码

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

如何重现这个错误:

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

no errors, as expected.


所以我试了:

  • 创建第二个文件Test1.java并更改为ISO-8859-1编码
  • 添加main方法,只使用print命令
  • 运行Test1.java

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

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


解决方案:

  • 确保所有文件都使用UTF-8编码;和/或
  • 使用javac -encoding UTF-8 ...作为saka1029的注释

对于我来说,在编辑时,我看到IDEA可以识别日文字符的消息,我点击OK将默认显示设置为"Encoding windows-31j"。在构建过程中,系统根据"Encoding windows-31j"重新读取文件,导致错误。如何修复:强制IDEA使用UTF-8编码构建,如以下图像

如果UTF8失败,请将其更改为"-encoding utf -16">

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

您可以通过charValue()检索字符。

另外,请确保您使用的编码方案(例如UTF-16)支持您的字符。

相关内容

  • 没有找到相关文章

最新更新