【问题标题】:Weird Characters when Writing to File (Mac) (Java)写入文件时出现奇怪的字符 (Mac) (Java)
【发布时间】:2011-10-03 21:32:57
【问题描述】:

我正在使用 Mac (Snow Leopard)。使用 Java,我清除文件内容,然后写入它。 这是清除文件的代码:

   new File(FileName).delete();
   new File(FileName).createNewFile();

之后,当我写入文件时,我发现奇怪的字符;例如: 而不是写:

预期为“=”、“,”、“;”、“asm”

它写道:

预期 ,Äò=,Äô, ‚Äò,‚Äô, ‚Äò;‚Äô, ‚Äòasm,Äô

我确定 createNewFile() 会导致问题,因为当我将相同的文本写入手动创建的文件时不会出现问题。我能做什么?

谢谢。

【问题讨论】:

  • 你用什么来写入文件?您是否使用包装在 BufferedWriter 中的 OutputStreamWriter,并指定 OutputStreamWriter 的字符集?
  • 您不需要删除文件并重新创建它来替换其内容。只需写入文件即可。我也怀疑是编码问题。
  • 其实是gcc命令通过终端使用这个命令写的: $(foreach f, $(CFILES) , gcc $f 2>> errors.txt;)
  • 我正在将gcc编译的错误写入文本文件
  • 正如@JBNizet 提到的,我不需要删除并重新创建文件。所以我只是将空字符串写入文件以清除它。 BufferedWriter Writer = new BufferedWriter(new FileWriter(ErrorFileName)); Writer.write(""); Writer.close();

标签: java file-io osx-snow-leopard


【解决方案1】:

您在某处引入了转码错误。

您在 Java 中将数据编码为 UTF-8,但无论您使用什么来解码它,都将数据视为(可能)MacRoman。

或者,您的 Java 编辑器将文件保存为 UTF-8,而您的编译器在编译之前将其解码为 MacRoman。

阅读this

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-07-26
    • 1970-01-01
    • 2015-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多