更改文本文件编码

时间:2014-01-07 13:34:52

标签: c# notepad++

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

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

2 个答案:

答案 0 :(得分:3)

你可以做类似的事情,但我不确定这是否真的有意义,因为你的文件似乎没有内容......

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

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

编辑:

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

答案 1 :(得分:1)

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

知道输入编码后,将使用编码名称创建的Encoding实例传递给StreamReader构造函数,创建一个具有所需输出的StreamWriter实例编码,然后将字符串从一个泵送到另一个。

(如果您知道这些文件不是太大:请使用File.ReadAllTetxt一次性阅读所有内容,然后使用File.WriteAllText进行搜索,这需要Encoding个参数。