如何以编程方式为java应用程序的接口设置文本编码?

时间:2014-08-18 21:22:00

标签: java character-encoding

我正在使用javafx构建一个应用程序,该接口应该是西班牙语。从文件中读取并显示的许多信息都带有重音等。当我在MACOSX上运行应用程序时,它的工作非常漂亮且无缝。

如果我在IDE(Netbeans 8.0,JKD 8u11)中的Windows上运行它,也会发生同样的情况。

为什么,当我在Windows 8.1上的IDE外运行应用程序时,编码是否会突然改变,显示填充了替换字符的文本以及如何从代码中解决问题?它是否可能或者是用户必须假设的系统变量?

此外,根据主窗口顶部显示的窗口判断,只有在阅读文本文件并将其显示在TextArea中时才会出现问题。

这就是我得到的:

This

1 个答案:

答案 0 :(得分:1)

  

这是一个应用程序缺陷。您必须指定编码(Charset)   从字节转换为字符时,反之亦然。 - MCDowell。

     

您需要具体说明InputStreamReader的编码并获取   摆脱使用默认编码的FileWriter,并使用   相反,OutputStreamWriter使用适当的编码。另请注意   如果您使用Java 7+,则有更简单的读/写方式   文件。 - assylias

产生解决方案:

br = new BufferedReader(new InputStreamReader(this.getClass().getClassLoader().getResourceAsStream(name+shortName+".txt"),Charset.forName("UTF-8")));

bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("presentaciones/"+shortName+"/"+shortName+".txt"), Charset.forName("UTF-8")));

...其中UTF-8是我实际需要的编码,用于保存逆变器标记和重音等符号......谢谢大家!!