【问题标题】:Change Text File Encoding更改文本文件编码
【发布时间】:2014-01-07 13:34:52
【问题描述】:

如何通过代码更改文本文件的编码?我正在使用此代码来实际创建文件本身,但是如何更改编码(更改为 UTF-8 w/o BOM)

string path = @"E:\Test\Example.txt";
if (!File.Exists(path))
{
    File.Create(path);
}

【问题讨论】:

  • 文件没有编码,你写入的文本有。
  • 有没有办法通过代码改变文本的编码?

标签: c# notepad++


【解决方案1】:

您可以这样做,但我不确定这是否真的有意义,因为您的文件中似乎没有内容...

如果您有内容,请将string.Empty 替换为内容

File.WriteAllText(path, string.Empty, Encoding.GetEncoding(<someEncodingCode>));

编辑:

File.WriteAllText(path, string.Empty, new UTF8Encoding(false));

【讨论】:

  • 你知道 UTF8 w/o BOM 的 encodingCode 吗?
【解决方案2】:

首先,除了少数基础(例如,Unicode BOM、XML 的编码规则)之外,您将需要某种形式的元数据来告诉您当前的编码。虽然有些工具会做出猜测,但它们并不可靠(例如,ISO/IEC 8859-1 中的各种拉丁编码没有任何区别)。

知道输入编码后,将使用编码名称创建的Encoding 的实例传递给StreamReader 构造函数,使用所需的输出编码创建StreamWriter 的实例,然后从一对一。

(如果您知道文件不是太大:使用File.ReadAllTetxt 一口气读取所有内容并使用File.WriteAllText 写入,这需要Encoding 参数。

【讨论】:

  • 数据将被手动剪切/粘贴到文本文件中,只是希望它是自动创建的。 -- 我现在看到文本是有编码的,而不是文件,所以你的答案现在很有意义。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-22
相关资源
最近更新 更多