【问题标题】:How to correctly interpret escape sequences Java如何正确解释转义序列 Java
【发布时间】:2023-03-05 17:57:01
【问题描述】:

我的 Java 程序似乎难以解释转义字符。输出应该是彩色文本,但最终会像 \u00202b+-+¦¦+-++-+¦¦+-+¦¦¦+-+ 而不是颜色。

public static void main(String[] args) throws IOException {

    BufferedReader br = new BufferedReader(new FileReader("C:\\Users\\gabri\\IdeaProjects\\Atlas\\into.txt"));
    String line;
    while ((line = br.readLine()) != null) {
        System.out.println(line);
    }
}

【问题讨论】:

  • 尝试为您的 FileReader 指定一个明确的字符集。 (无论您的 into.txt 文件的编码是什么)
  • @OmarAbdelBari 我可以在用“\blablabla”定义它时做到这一点,但在用文件读取时却不行,由于某种原因它读作“\\blablabla”
  • 你是对的,令我惊讶的是它实际上允许它。但我想这取决于谁在处理输出。
  • 文件中的颜色信息是如何编码的?一般来说,Unicode 文本可以包含具有定义颜色的字形(即表情符号),但一般文本没有颜色信息。

标签: java ansi


【解决方案1】:

可能您文件的编码不是默认编码UTF-8FileReaderFileInputStream 的便捷实现。

改用InputStreamReader 尝试不同的编码:

BufferedReader br = new BufferedReader(
  new InputStreamReader(
    new FileInputStream("C:/Users/gabri/IdeaProjects/Atlas/into.txt"),
    Charset.forName("UTF-16") // find an encoding that works
  )
);

有几个standard charsets可供选择。


旁注:您可以使用 / 作为 Windows 操作系统文件系统的路径分隔符 - java 会弄清楚。

【讨论】:

  • 我不确定我是否关注这里
  • 他想说尝试使用不同于 Java 默认 UTF-8 的编码将文件的字节内容转换为字符串。
  • @OmarAbdelBari 对我一点也不起作用,一直说它无法解析构造函数
  • 这很奇怪,因为 Java 通常是向后兼容的,构造函数是 https://docs.oracle.com/javase/7/docs/api/java/io/InputStreamReader.htmlhttps://docs.oracle.com/javase/7/docs/api/java/io/BufferedReader.html。它在抱怨哪个构造函数?检查您正在使用的版本的文档。我非常怀疑它不存在。
  • 您使用的是什么版本的 Java?
猜你喜欢
  • 2011-07-15
  • 1970-01-01
  • 2013-04-12
  • 1970-01-01
  • 2023-03-20
  • 2023-02-19
  • 1970-01-01
  • 1970-01-01
  • 2013-07-25
相关资源
最近更新 更多