ホームページ  >  記事  >  Java  >  Javaでテキストファイルを読み込むと文字化けが発生する

Javaでテキストファイルを読み込むと文字化けが発生する

王林
王林オリジナル
2019-11-28 11:18:591850ブラウズ

Javaでテキストファイルを読み込むと文字化けが発生する

最近、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 クラスの処理は図のようになります。

Javaでテキストファイルを読み込むと文字化けが発生する

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。