首页 > 解决方案 > C# WriteAllText 仅以编码 UTF8 格式写入

问题描述

我已经使用下面的代码来编写文件。

File.WriteAllText(fileName, data, Encoding.Unicode);

当我使用下面的代码读取文件时,因为文件编码的类型是特定于运行时的。

using (StreamReader sR = File.OpenText(fileName))
{
    encoding = sR.CurrentEncoding;
}

我得到 Encoding.UTF8

我也使用了这个链接中的方法

任何人都可以建议找到编码的工作方式吗?

谢谢

标签: c#text

解决方案


File.OpenText

打开现有的 UTF-8 编码文本文件进行读取。

所以它不会猜测文件是用什么编码编码的。即使你Encoding.Unicode在写入文件时使用了,File.OpenText仍然会将它读取为 UTF-8。

如果要读取 中的文件Unicode,可以StreamReader这样创建:

using (StreamReader sR = new StreamReader(fileName, Encoding.Unicode)) {
   encoding = sR.CurrentEncoding; // Unicode
   // ...
}

如果您不知道文件编码,那么您需要检测编码


推荐阅读