2011-05-16 2 views
2

Я написал текстовый файл со следующим содержимым: \u0032\u0142o\u017Cy\u0142как разобрать Юникод, который считывается из файла в Java

Тогда я использовал FileReader унд 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"? –

+0

Благодарим вас за быстрый ответ. Он содержит \ u0042 \ u0142o \ u017Cy \ u0142 без кавычки. – user755620

ответ

1

Вы можете использовать исходный код here, чтобы сделать unescaping.

+0

Спасибо. Оно работает. – user755620

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

Разбор специальных последовательностей Юникода не является явной частью Java Standard API, это только неявно происходит при загрузке Properties. Вы можете скопировать реализацию из исходного кода Properties.

Но было бы лучше использовать обычную кодировку, такую ​​как UTF-8 для вашего файла.