最近、Java がテキスト ファイル (csv ファイル、txt ファイルなど) を読み取るときに、中国語の文字が含まれると文字化けする問題が発生しました。次のようにコードを読んでください:
List<String> lines=new ArrayList<String>(); BufferedReader br = new BufferedReader(new FileReader(fileName)); String line = null; while ((line = br.readLine()) != null) { lines.add(line); } br.close();
推奨される関連ビデオ チュートリアル: Java オンライン学習
原則:
Java I/O クラスの処理は図のようになります。
Reader クラスは Java I/O での文字読み取りの親クラスであり、InputStream
クラスは、Java I/O での文字の読み取りの親クラスです。バイトの親クラスである InputStreamReader
クラスは、バイトを文字に関連付けるブリッジです。読み取りバイトの変換の処理を担当します。 I/O プロセス中に文字に変換され、バイトを文字にデコードする特定の実装。これは StreamDecoder
によって実装され、Charset エンコード形式は StreamDecoder のデコード プロセス中にユーザーが指定する必要があります。
。
Charset を指定しない場合、ローカル環境のデフォルトの文字セットが使用されることに注意してください (たとえば、中国語環境では GBK エンコードが使用されます)。
概要: Java がデータ ストリームを読み取るときは、データ ストリームのエンコード方式を指定する必要があります。指定しないと、ローカル環境のデフォルトの文字セットが使用されます。
上記の分析後、変更されたコードは次のようになります:
List<String> lines=new ArrayList<String>(); BufferedReader br=new BufferedReader(new InputStreamReader(new FileInputStream(fileName),"UTF-8")); String line = null; while ((line = br.readLine()) != null) { lines.add(line); } br.close();
さらに関連するチュートリアルを知りたい場合は、次のサイトにアクセスしてください: Java 入門学習
以上がJavaでテキストファイルを読み込むと文字化けが発生するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。