我的代码是:
File.AppendAllText(
@"C: \Users\aalig\Downloads\stok.txt",
"text content" + Environment.NewLine,
Encoding.UTF8);
但是在写文本文件看起来之后 - 原始文本首先正确(预期),但后面是象形文字而不是“文本内容”:
答案 0 :(得分:2)
源文件具有不同的编码(不是代码指定的UTF8)。当AppendAllText
按照请求添加UTF8文本时,它将附加UTF8编码的字符串。当用另一种编码(即UTF16)读取这样的字节序列时,它将被解释为不同的Unicode字符集。
修正:
产生无效结果的示例:
string path = @"e:\temp\MyTest.txt";
File.WriteAllText(path, "Hello and Welcome" + Environment.NewLine, Encoding.Unicode);
// Note that AppendAllText uses different encoding than WriteAllText
// To correct - specify the same Encoding.Unicode (option 1)
File.AppendAllText(path, "text content" + Environment.NewLine, Encoding.UTF8);
Console.WriteLine(File.ReadAllText(path));
结果
Hello and Welcome
整瑸挠湯整瑮
读取整个文件并附加文本的示例(选项2)
File.WriteAllText(path,
File.ReadAllText(path)
+ Environment.NewLine
+ newContentToAdd);