我正在使用javafx构建一个应用程序,该接口应该是西班牙语。从文件中读取并显示的许多信息都带有重音等。当我在MACOSX上运行应用程序时,它的工作非常漂亮且无缝。
如果我在IDE(Netbeans 8.0,JKD 8u11)中的Windows上运行它,也会发生同样的情况。
为什么,当我在Windows 8.1上的IDE外运行应用程序时,编码是否会突然改变,显示填充了替换字符的文本以及如何从代码中解决问题?它是否可能或者是用户必须假设的系统变量?
此外,根据主窗口顶部显示的窗口判断,只有在阅读文本文件并将其显示在TextArea中时才会出现问题。
这就是我得到的:
答案 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是我实际需要的编码,用于保存逆变器标记和重音等符号......谢谢大家!!