【问题标题】:C# WriteAllText writes only in Encoding UTF8 formatC# WriteAllText 仅以编码 UTF8 格式写入
【发布时间】:2020-09-16 08:23:49
【问题描述】:

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

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

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

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

我得到 Encoding.UTF8

This Link中的方法我也用过

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

谢谢

【问题讨论】:

  • OpenText 始终以 UTF8 格式打开。 docs.microsoft.com/en-us/dotnet/api/…
  • 一个文件只是一个字节序列。如果您不知道编码,可能会有一些猜测(尽管它们只是猜测),但您确实应该在尝试打开文件时知道并指定编码。
  • 使用var reader = new StreamReader(fileName, Encoding.Unicode) 而不是File.OpenText()

标签: c# text


【解决方案1】:

File.OpenText:

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

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

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

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

如果不知道文件编码,则需要detect the encoding

【讨论】:

    猜你喜欢
    • 2017-12-11
    • 1970-01-01
    • 1970-01-01
    • 2012-07-26
    • 1970-01-01
    • 2012-09-04
    • 2014-02-12
    • 2014-04-18
    相关资源
    最近更新 更多