2016-09-09 15 views
0
InputStreamReader isr = new InputStreamReader(new FileInputStream(f), "UTF-8"); 

ルールに従って、指定されたすべての文字がストリームのままで返されます。しかし、それは正常に動作していません。特殊文字を無効な文字列に変換しています。ファイルから読み込んだ後に特殊文字が正しく取り込まれない

入力文字数:メソッドを上から読んだ後éÇüéâäàåçêëèïîìÄÅÉæ

出力:

+2

は、あなたが読んでいるファイルは、UTF-8エンコーディングを持っているか、ファイルのエンコーディングを使用していることを確認してください。また、それはちょうどあなたが出力を書いている方法かもしれません。 –

+0

私はCSVReader reader = new CSVReader(isr、 ';');を使用しています。 –

+0

プログラム内の文字列に入力文字を割り当てて、コンテンツを印刷できるかどうかを確認します。文字列が表示されているコンソールが 'UTF-8'を使用していない可能性があります。 – 11thdimension

答えて

3

これはあなたのストリームであることを意味しますUTF-8ではありません。これは、Windows-1252またはISO 8859-1またはその他のエンコーディングである可能性があります。

読者は、正しく読み込むために、ストリームがエンコードされたエンコードを使用する必要があります。

注目に値する記事:The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!)

+0

CSVReaderリーダー=新しいCSVReader(isr、 ';');これは私がデータを読み取るために使用しているものです。私はCSV形式のファイルを持っています –

+1

'isr'が正しく設定されていない場合は問題ありません。あなたのデータはUTF-8としてエンコードされていません。 – Phylogenesis

+0

@VinaySharma:上のPhyloのコメント(および私の答え)を参照してください。明らかに、読み取ろうとしているデータはUTF-8としてエンコードされていません。 –

関連する問題