我正在尝试使用许多不同的语言读入.properties文件,向它们添加新条目,排序并打印回文件。我的编码为UTF-8,它适用于除俄语之外的所有当前语言。在阅读文件时,我会从俄罗斯文件中获取所有问号。当它打印出来时,它有很多正确的文字,但在这里和那里都有随机的问号。这是我在文件中阅读的代码。
Properties translation = new Properties() {
private static final long serialVersionUID = 1L;
@Override
public synchronized Enumeration<Object> keys() {
return Collections.enumeration(new TreeSet<Object>(super.keySet()));
}
}
byte[] readIn = Files.readAllBytes(Paths.get(filePath));
String replacer = new String(readIn).replace("\\","\\\\");
translation.load(new InputStreamReader(new ByteArrayInputStream(replacer.getBytes()),"UTF-8"));
答案 0 :(得分:2)
new String(readIn)
和replacer.getBytes()
不使用UTF8。他们使用您的平台默认编码。将StandardCharsets.UTF_8
作为两个调用的附加参数传递。
translation.load(new StringReader(replacer));
答案 1 :(得分:0)
有时将编码更改为utf-8会导致错误,例如一些额外的字符或什么都不做。 链接:How can i read a Russian file in Java?可能会对您有所帮助。