【问题标题】:Alternatives to setting encoding in FileWriter - Java在 FileWriter 中设置编码的替代方法 - Java
【发布时间】:2016-02-11 20:53:12
【问题描述】:

我阅读了 FileWriter 的 java 文档——它不允许我们指定编码。我使用 FileWriter 是为了避免在将字符串列表写入文件时自动附加换行符(我认为这是我唯一可以用来实现这一点的方法)。

我现在面临一个问题,一些属性文件中的一些日文字符被写为“???”,所以我需要以某种方式传递编码信息。有没有其他方法可以避免添加换行符或将编码信息传递给 FileWriter?

【问题讨论】:

    标签: java encoding outputstream filewriter bufferedwriter


    【解决方案1】:

    不要使用FileWriter,而是使用new OutputStreamWriter(new FileOutputStream(file), encoding)

    【讨论】:

      【解决方案2】:

      如果您使用Path (Java 7+),您可以使用Files.newBufferedWriter(path, charset, options) 指定Charset。 (这也将您的输出包装在 BufferedWriter 中,这很好。)

      经典的替代方法是使用OutputStreamWriter 并以这种方式传递Charset

      始终将字符集传递给作者是一个好习惯,即使您认为它不可能处理非 ASCII 内容。

      【讨论】:

      • 但我认为 newBufferedWriter 会附加一个系统特定的换行符作为我试图避免的 EOL。 BufferedWriter() 这样做,不确定 newBufferedWriter 的行为是否与此不同。
      • 啊,有趣。我知道 BufferedWriter 支持 newLine() 添加特定于平台的换行符,但我想如果你写了一个文字 \n,那会被使用。这不是你看到的行为吗?
      • 我不想添加特定于平台的换行符。 BufferedWriter 正是这样做的。我想保留源文本文件中的换行符。但是现在我测试了 OutputStreamWriter 并且它工作了! :-) 没有添加换行符,也允许指定编码!
      猜你喜欢
      • 1970-01-01
      • 2016-05-10
      • 1970-01-01
      • 2014-09-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多