【问题标题】:IntelliJ - inputting unescaped UTF-8 non ASCII charactersIntelliJ - 输入未转义的 UTF-8 非 ASCII 字符
【发布时间】:2018-08-04 09:23:09
【问题描述】:

我有一个程序,我想在其中放入包含未转义 Unicode 字符的字符串,例如

String s = "(¬(a) ∨ ((¬(b) ∧ (c ∨ d)) ∨ e))"

问题是这个字符串已经被错误地读取了,因为 Unicode 字符没有被转义,所以如果我立即打印它,我会得到:

(¬(a) ⨠((¬(b) ⧠(c ⨠d)) ⨠e))

当然,如果我转义字符串中的 Unicode 字符,它就可以正常工作:

String s = "(\u00AC(a) \u2228 ((\u00AC(b) \u2227 (c \u2228 d)) \u2228 e))"
System.out.println(s); 

Output:
(¬(a) ∨ ((¬(b) ∧ (c ∨ d)) ∨ e))

但是,与第一个输入相比,第二个只能说是不祥之兆,一无所有。

有没有办法保持视觉表示,并且仍然可以工作?

文件编码为 UTF-8。

【问题讨论】:

  • 您是否尝试将源代码保存为 UTF-8? blog.jetbrains.com/idea/2013/03/…
  • @Malt 是的,我已将编码设置为 UTF-8。如果我例如在记事本中打开它,它也会显示为正确的 Unicode

标签: java intellij-idea utf


【解决方案1】:

基本上,当您在 java 中阅读 String 之类的内容时,您可以保留演示文稿,请参见此处的示例:https://ideone.com/krMJRf

同样的事情也适用于新的 InteliJ hello-world 模板应用程序。

我猜,但你没有在问题中提到 - 你正在阅读一个文件。该文件需要具有良好的编码才能使其工作。

【讨论】:

  • 我完全按照您在示例中所做的操作,但没有成功。事实证明,您的项目中没有 UTF-8 编码的单个文件意味着无法以 UTF-8 读取其他文件(无论多么不相关)。感谢您提供的工作示例,否则我永远不会知道这是我的项目结构中某个地方出现的一些特殊性!
猜你喜欢
  • 1970-01-01
  • 2011-06-19
  • 1970-01-01
  • 2014-06-01
  • 1970-01-01
  • 2013-11-17
  • 2015-10-26
  • 2021-10-27
  • 2021-12-13
相关资源
最近更新 更多