2011-05-16 25 views
2

我已經寫了一個包含以下內容的文本文件的Unicode:\u0032\u0142o\u017Cy\u0142如何解析被從文件中讀取Java中

然後我用的FileReader UND的BufferedReader讀取文件。

public static void main(String[] args) throws Exception{ 
    FileInputStream fr = new FileInputStream("README.TXT"); 
    BufferedReader br = new BufferedReader(new InputStreamReader(fr,"UTF-8")); 
    String s=""; 
    while((s=br.readLine())!=null){ 
     System.out.println(s); 
    } 
} 

但輸出結果是:\u0032\u0142o\u017Cy\u0142

當我使用

System.out.println("\u0032\u0142o\u017Cy\u0142"); 

這些代碼將被解析,並且將在正確的形式示出。

如何更改我的代碼,以便文件中的unicode也將被解析並以正確的形式顯示?

+1

您的文件是否包含'\ u0032'的實際字符,還是包含字符串「\ u0032」? – 2011-05-16 12:50:52

+0

感謝您的快速回復。它包含沒有引號的\ u0032 \ u0142o \ u017Cy \ u0142。 – user755620 2011-05-16 12:55:50

回答

1

您可以使用發佈的源代碼here來做轉義。

+0

謝謝。有用。 – user755620 2011-05-16 14:44:02

3

您想使用sun.tools.native2ascii來反向轉換文本。

new sun.tools.native2ascii.Main().convert(new String[]{"-reverse", new File("README.TXT"), convertedFile}); 

所以像這樣的事情會做到這一點。

public static void main(String[] args) throws Exception{ 
    File convertedFile = new File("converted.txt"); 
    new sun.tools.native2ascii.Main().convert(new String[]{"-reverse", new File("README.TXT"), convertedFile}); 
    FileInputStream fr = new FileInputStream(convertedFile); 
    BufferedReader br = new BufferedReader(new InputStreamReader(fr,"UTF-8")); 
    String s=""; 
    while((s=br.readLine())!=null){ 
     System.out.println(s); 
    } 
} 
0

Unicode轉義序列的分析是不是Java標準API的一個明確組成部分,它加載Properties時只是含蓄地發生。您可以從Properties的源代碼複製實施。

但是最好使用像UTF-8這樣的普通編碼來處理文件。