如何更改此文件的编码?

时间:2014-11-14 20:31:40

标签: c# encoding

我正在打开一个文件,并逐行阅读。每行都被更改,然后写入另一个文件。我需要将编码更改为UTF-16,但我找不到这样做的方法。有人可以帮忙吗?当然,这是c#。

using (var inputStream = File.OpenRead(sourceFile))
{
    using (var inputReader = new StreamReader(inputStream))
    {
        using (var outputWriter = File.AppendText(destFile))
        {
            string tempLineValue;
            while (null != (tempLineValue = inputReader.ReadLine()))
            {
                if (tempLineValue != "\t\t\t\t\t")
                {
                    var newEndOfLine = string.Format("{0}Added Info\r\0\n\0", '\0');
                    var firstReplace = tempLineValue.Replace('\t', '\0');
                    var secondReplace = firstReplace + newEndOfLine;
                    outputWriter.WriteLine(secondReplace); 
                }
            }
        }
    }
}

2 个答案:

答案 0 :(得分:2)

您无法使用File.AppendText。根据文档:http://msdn.microsoft.com/en-us/library/system.io.file.appendtext(v=vs.110).aspx,它只输出UTF-8。

相反,创建自己的StreamWriter(http://msdn.microsoft.com/en-us/library/3aadshsx(v=vs.110).aspx),这将允许您指定所需的任何编码。只需创建一个新的输出流并执行以下操作:

var outputStream = new FileStream(destFile, FileMode.Append, FileAccess.Write);

using (StreamWriter outputWriter = new StreamWriter(outputStream, Encoding.Unicode))
{
    //do whatever write you want
}

答案 1 :(得分:1)

您无法在同一文件上执行此操作(至少不使用过于复杂的代码)。使用您想要的编码创建一个新文件。

Encoding inEnc = .......; //Encoding.Default
Encoding outEnc = Encoding.Unicode;

File.WriteAllText(outfilename, File.ReadAllText(infilename, inEnc), outEnc);