C#テキスト符号化変換および読み出しテキスト符号化方法
2531 ワード
///
///
///
///
///
///
public void changeFileCodeing(String filePath,Encoding oldEncoding, Encoding newEncoding)
{
FileStream fs = new FileStream(filePath, FileMode.Open);
StreamReader sr = new StreamReader(fs, oldEncoding);
FileStream fsw = new FileStream(filePath + ".temp", FileMode.OpenOrCreate);
BinaryWriter bw = new BinaryWriter(fsw, newEncoding);
Char[] buffer = new char[1024];
int i = sr.Read(buffer, 0, 1024);
while (i > 0)
{
//
Byte[] buf = newEncoding.GetBytes(buffer, 0, i);
bw.Write(buf);
i = sr.Read(buffer, 0, 1024);
}
sr.Close();
bw.Close();
fs.Close();
fsw.Close();
File.Delete(filePath);
File.Move(filePath + ".temp", filePath);
}
ネット上でファイルの符号化を得る方法を探した.方法は、ファイルの最初の2バイトを読み取り、何の符号化かを判断することです.しかし、上記の方法で符号化を変換すると、テキスト符号化を認識する方法が間違ってしまう~この代で解決!
テキストファイルの識別方法
///
///
///
///
///
public Encoding getCodeString(String filePath)
{
FileStream fs = new FileStream(filePath, FileMode.Open, System.IO.FileAccess.Read);
BinaryReader br = new 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;
}
}
コード異常検出は行われていません.使うなら自分で追加してください.