JavaのFileReaderのファイル文字化けする現象を読みます

テストコード:

/**
package com.jwen;

import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

/**
 * @author jwen
 * 
 */
public class TestFileReaderAndWriter {

    public static void main(String[] args) {
        FileReader fr = null;
        FileWriter fw = null;
        try {
            fr = new FileReader("e:/file.txt");
        } catch (FileNotFoundException e) {
            System.out.println("the file isn't found!");
            return;
        }
        
        try {
            fw = new FileWriter("e:/file1.txt");
        } catch (IOException e) {
            System.out.println("the file read or write errors !");
            return;
        }
        
        int c = -1;
        try {
            while((c = fr.read()) != -1) {
                fw.write(c);                         //写进文件的也可能是乱码
                System.out.print((char)c); //如果你的系统不是中文的(比如英文)显示出的文字可能会是乱码
            }
            fw.flush();
        } catch (IOException e) {
            System.out.println("the file read or write errors !");
        } finally {
            try {
                fr.close();
                fw.close();
            } catch (IOException e) {
                System.out.println("the file close errors !");
            }
            
        }
    }

}

理由:

   あなたのデフォルトのファイルエンコードはANSIが符号化されています。

  これにより、GB2312、BIG5、JIS及びその他のそれぞれのコーディング標準を作成し、異なる規格を開発するためにさまざまな国と地域。2つのバイトこれらの使用は、呼び出されたANSIコードを拡張漢字文字エンコーディングのさまざまな表現します。簡体字中国語システムでは、ANSI GB2312符号化の符号化表現は、日本語OSで、ANSIは、JISコードの表現を符号化されました。
  情報交換の国際的、あなたは二つの言語のテキストに属することはできません異なるANSIエンコーディング、間の互換性のない、テキストがエンコードされたANSIの同期間に保存されています。

   お使いのシステムは、非中国人である場合は、あなたのコードは、適切なANSIに対応しています。ファイルが中国読み込まれると、文字化けします。別のファイルをしてFileWriterによって書かれている場合は、当然、それは文字化けします。(問題は読書にあるので)

 

ソリューション:

     別のノードトランスコードストリームFileInputStreamに1。

          InputStreamReaderのISR =新しいInputStreamReaderの(新しいFileInputStreamを(ファイル)、 "GBK"); //或GB2312、GB18030
          BufferedReaderのは=新しいをBufferedReader(ISR)を読みます。

     TXTファイルは、符号化セットに保存されることができるようにFileReaderの2は、(例えば、UTF-8のような)は、共通のファイルのエンコーディングに読み取ることができ、使用しなければなりません。書いた後、表示が正常でお読みください。
--------------------- 
著者:superjacksonの 
出典:CSDN 
オリジナルます。https://blog.csdn.net/w304807481/article/details/8151953 
免責事項:この記事ブロガーのオリジナルの記事、複製など、ボーエンのリンクを添付してください!

おすすめ

転載: blog.csdn.net/xingqibaing/article/details/84196242