本当に簡単な質問です。 JavaプログラムでUnicodeテキストファイルを読み取る必要があります。
私は、明らかに機能していないBufferedReaderFileReaderコンボでプレーンASCIIテキストを使用することに慣れています:(
バッファリーダーを使用して「従来の」方法で文字列を読み取り、次のようなものを使用して変換できることを知っています。
temp = new String(temp.getBytes(), "UTF-16");
しかし、リーダーを「コンバーター」でラップする方法はありますか?
編集:ファイルはFFFEで始まります
readerをラップするのではなく、InputStreamReaderを使用してストリームをラップします。次に、現在使用しているBufferedReaderでそれをラップできます。
BufferedReader in = new BufferedReader(new InputStreamReader(stream, encoding));
チェック http://Java.Sun.com/j2se/1.4.2/docs/api/Java/io/InputStreamReader.html
私は次のようなものでソースファイルを読みます:
Reader in = new InputStreamReader(new FileInputStream("file"), "UTF-8"));
いくつかの注意:
Google Data APIのUnicodeReaderを使用することをお勧めします。同様の質問については、 この回答 を参照してください。バイトオーダーマーク(BOM)からエンコーディングを自動的に検出します。
また、Apache Commons IOの BOMInputStream を検討することもできます。これは基本的に同じですが、BOMのすべての代替バージョンを網羅しているわけではありません。
InputStreamReaderの作成に「UTF-8」を追加するだけで、すぐに特殊文字が表示されました。
InputStreamReader istreamReader = new InputStreamReader(inputStream,"UTF-8");
BufferedReader bufferedReader = new BufferedReader(istreamReader);