首页 > 解决方案 > (Intellij) 编译时出现“未封闭字符文字”和“非法字符'\u00a7'”

问题描述

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

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

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

标签: javaascii

解决方案


我如何重现该错误:

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

没有错误,正如预期的那样。


所以我尝试了:

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

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

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


解决方案:

  • 确保所有文件都使用 UTF-8 编码;和/或
  • javac -encoding UTF-8 ...按照saka1029评论使用

推荐阅读