2015-06-22 55 views
1

我正嘗試讀取.properties文件中多種不同的語言,向它們添加新條目,排序並打印迴文件。我的編碼爲UTF-8,並且適用於除俄文之外的所有當前語言。在閱讀文件時,我會從俄羅斯文件中獲得所有問號。當它打印出來時,它有很多正確的文本,但在這裏和那裏都有隨機的問號。這是我在文件中閱讀的代碼。閱讀.properties文件用俄語寫的

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")); 

回答

2

new String(readIn)replacer.getBytes()不使用UTF-8。他們使用您的平臺默認編碼。通過StandardCharsets.UTF_8作爲這兩個調用的附加參數。

順便提一下,將STring轉換爲字節數組,然後將字節轉換回字符並讀取它們是浪費時間和資源。只是做

translation.load(new StringReader(replacer)); 
+0

這看起來像在打印迴文件時修復了它。雖然如果打印到system.out而不是回到文件中,它仍然會顯示問號。奇。 –

+0

您的控制檯或其字體可能無法顯示俄語字符。 –