C#IO操作(三)ファイル符号化
2837 ワード
はい.Net環境下で新規のテキストファイル(テキストファイルとは直接手帳で開くことができるファイルであり、文字列を直接保存することである)と、システム内で新規のテキストファイルの符号化は異なる.NetのデフォルトはUTF-8で、中国語のオペレーティングシステムはANSIを採用しています.もしNet環境では、システムによって新しく作成されたテキストファイルを直接読み取り、符号化が一致しないため、読み取り時に文字化けしてしまいます.次に、文字化けしの解決方法を説明します.
中国語の読み取り文字化けの問題を解決するには、書き込み時にどのような符号化を使用するかを保証し、そのファイルを読み取るには同じ符号化を使用すればよい.
次に、システム内のすべてのコードを見てみましょう.
GB 2312符号化:ASCII符号表に対応し、英字文字は1バイト(バイトは正数)、中国語は2バイト(バイトは負数)である.GBK符号化:GB 2312符号化に対応する.中国語は2バイトで表される(1バイト目は負数、2バイト目は直後の正数).Unicode:国際コードテーブルで、中国語と英語が2バイトを占めています.UTF-8:国際コード表、英語1バイト、中国語3バイト.
1 //
2 Encoding cod = Encoding.GetEncoding("gb2312"); // gb2312 。
3 Encoding codGBK = Encoding.GetEncoding("GBK"); // GBK 。
中国語の読み取り文字化けの問題を解決するには、書き込み時にどのような符号化を使用するかを保証し、そのファイルを読み取るには同じ符号化を使用すればよい.
次に、システム内のすべてのコードを見てみましょう.
1 //
2 string fileName = "encodings.txt";
3 EncodingInfo[] eInfo = Encoding.GetEncodings();
4 foreach (var item in eInfo)
5 {
6 File.AppendAllText(fileName, string.Format("{0}--{1}--{2}\r
", item.CodePage, item.Name, item.DisplayName));
7 }
8 Console.WriteLine("OK");
GB 2312符号化:ASCII符号表に対応し、英字文字は1バイト(バイトは正数)、中国語は2バイト(バイトは負数)である.GBK符号化:GB 2312符号化に対応する.中国語は2バイトで表される(1バイト目は負数、2バイト目は直後の正数).Unicode:国際コードテーブルで、中国語と英語が2バイトを占めています.UTF-8:国際コード表、英語1バイト、中国語3バイト.