C(※)符号化フォーマットを指定したテキストファイルを読み、書きます。


仕事中はよくテキストファイルを読み、ファイルを読むときは、最初の2バイトでファイル形式を判断し、その形式でファイルの内容を読む必要があります。
 ファイルを書く時も、ターゲットファイルの指定したフォーマットに従って書き込みます。これで後続の環境が正しく読み込まれます。
1表示形式
    vs 2010開発環境であるファイルを開き、メニューからファイル→高度な保存オプションを選択すると、現在のファイルの符号化フォーマットが表示されます。
  例えば、XXX.cs、x.cshtmlファイルが見たのは「簡体字中国語(GB 2312)-コードページ936」で、GB 2312です。
  x.xmlファイルは「Unicode(UTF-8署名付き)-コードページ65001」を見ました。UTF-8です。
  一般的なフォーマットはASCII、UTF-8、UTF-7、UTF-32、Unicode、GB 2312です。
2フォーマットファイルを読みます

 Encoding encode=Encoding.GetEncoding("GB2312"));
         ,         
 encode = fileEncode.GetFileEncodeType("in_file.txt");
 string strStr1 = File.ReadAllText("in.txt", encode);
3フォーマットファイルを書く

 StreamWriter sw = new StreamWriter("out.txt", false, Encoding.GetEncoding("ASCII"));
 sw.Write("12.3");
 sw.Close();
4ファイルのコードフォーマットに従ってファイルの完全なコードを読み、書きます。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Xml;
using System.IO;
using System.Configuration;
using System.Text;

namespace WebApplication1
{
//=1=         
  public partial class _Default : System.Web.UI.Page
  {
    string proj_name = "";
    protected void Page_Load(object sender, EventArgs e)
    {
      string xml_in_file="c:\\part.xml";//    ,            
      string xml_out_file="c:\\all.xml";//  ,     ,       
//1            ,           
      Encoding encode1 = fileEncode.GetFileEncodeType(xml_in_file);
      
      StringBuilder strSb1 = new StringBuilder();
      string strStr1 = File.ReadAllText(xml_in_file, encode1);
//
      StringBuilder strSb = new StringBuilder();
      strSb.Clear();

//2            ,           
      Encoding encode6 = fileEncode.GetFileEncodeType(xml_out_file);
      strSb.AppendFormat("{0} \r
", File.ReadAllText(xml_out_file, encode6)); strSb.Replace(strStr1, "");// // , , strSb.Replace("</object_set>", strStr1 + "\r
" + "</object_set>");// // FileInfo myFile = new FileInfo(xml_out_file); // StreamWriter sw = myFile.CreateText(); StreamWriter sw = new StreamWriter(xml_out_file, false, encode6);//Encoding.GetEncoding("GB2312")); sw.Write(strSb.ToString()); sw.Close(); } } //=2= public class fileEncode {// public static System.Text.Encoding GetFileEncodeType(string filename) { System.IO.FileStream fs = new System.IO.FileStream(filename, System.IO.FileMode.Open, System.IO.FileAccess.Read); System.IO.BinaryReader br = new System.IO.BinaryReader(fs); Byte[] buffer = br.ReadBytes(2); br.Close(); fs.Close(); if (buffer[0] >= 0xEF) { if (buffer[0] == 0xEF && buffer[1] == 0xBB) { return System.Text.Encoding.UTF8; } else if (buffer[0] == 0xFE && buffer[1] == 0xFF) { return System.Text.Encoding.BigEndianUnicode; } else if (buffer[0] == 0xFF && buffer[1] == 0xFE) { return System.Text.Encoding.Unicode; } else { return System.Text.Encoding.Default; } } else { return System.Text.Encoding.Default; } } } }
以上がC(※)で指定された符号化形式の文書を読み書きする方法ですので、皆さんの勉強に役立ててください。