我对文件编码有点困惑。我想改变它。这是我的代码:
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)
为什么文件的编码没有改变?我在更改文件的编码时错了?
问候