ファイルのエンコーディングについて少し混乱しています。変えたい。これが私のコードです:
public class ChangeFileEncoding
{
private const int BUFFER_SIZE = 15000;
public static void ChangeEncoding(string source, Encoding destinationEncoding)
{
var currentEncoding = GetFileEncoding(source);
string destination = Path.GetDirectoryName(source) +@"\"+ Guid.NewGuid().ToString() + Path.GetExtension(source);
using (var reader = new StreamReader(source, currentEncoding))
{
using (var writer =new StreamWriter(File.OpenWrite(destination),destinationEncoding ))
{
char[] buffer = new char[BUFFER_SIZE];
int charsRead;
while ((charsRead = reader.Read(buffer, 0, buffer.Length)) > 0)
{
writer.Write(buffer, 0, charsRead);
}
}
}
File.Delete(source);
File.Move(destination, source);
}
public static Encoding GetFileEncoding(string srcFile)
{
using (var reader = new StreamReader(srcFile))
{
reader.Peek();
return reader.CurrentEncoding;
}
}
}
Program.cs には次のコードがあります。
string file = @"D:\path\test.txt";
Console.WriteLine(ChangeFileEncoding.GetFileEncoding(file).EncodingName);
ChangeFileEncoding.ChangeEncoding(file, new System.Text.ASCIIEncoding());
Console.WriteLine(ChangeFileEncoding.GetFileEncoding(file).EncodingName);
そして、コンソールに表示されるテキストは次のとおりです。
ユニコード (UTF-8)
ユニコード (UTF-8)
ファイルのエンコーディングが変更されていないのはなぜですか? ファイルのエンコーディングを変更するのは間違っていますか?
よろしく