2

次の内容のテキストファイルを作成しました。\u0032\u0142o\u017Cy\u0142

次に、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も解析されて正しい形式で表示されるように、コードを変更するにはどうすればよいですか?

4

3 に答える 3

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);
    }
}
于 2011-05-16T12:58:24.063 に答える
1

ここに掲載されているソースコードを使用して、エスケープを解除できます。

于 2011-05-16T13:03:15.833 に答える
0

Unicodeエスケープシーケンスの解析は、Java標準APIの明示的な部分ではなく、ロード時に暗黙的にのみ発生しPropertiesます。のソースコードから実装をコピーできますProperties

ただし、ファイルにはUTF-8などの通常のエンコーディングを使用することをお勧めします。

于 2011-05-16T12:59:29.080 に答える