附加到File的字符串转换为特殊字符

时间:2016-09-23 11:02:15

标签: c# .net visual-studio file

我正在尝试将一些字符串写入文件。

        string lines = "server.1=1.1.1.1:9999\nserver.2=2.2.2.2:8888\n";
        File.AppendAllText(directory_path + "zoo.cfg", lines);

文件中打印的字符串是

  

“敳癫牥ㄮㄽㄮㄮㄮ㤺㤹ਹ敳癫牥㈮㈽㈮㈮㈮㠺㠸ਸ”

。 我尝试在File.AppendAllText中编码ASCII,UTF-8,DEFAULT。但输出是一样的。

环境:

  

Visual Studio 2015,Windows server 2012,.net v4.5

请让我知道我做错了什么?

2 个答案:

答案 0 :(得分:2)

追加不会重写整个文件。因此,您必须使用与现有内容相同的编码。

通常,如果您不知道文本的编码,您可能也没有该文本。如果有人给你,“把它寄回去。”当他们发送给你时,必须伴随着对所用编码的相互理解。 (BTW-它不太可能是ASCII。而Encoding.Default在机器之间或用户之间对用户来说是无用的。)

鉴于结果,完全可以理解文件编码是UTF-16(Encoding.Unicode)。使用任何其他编码进行写入都是垃圾代码。

答案 1 :(得分:0)

好的,现在这很奇怪。上面给出的代码在我的其他机器上工作得很好。但出于某些原因,我不知道它在我的新开发环境中没有工作。 我通过添加 Encoding.Unicode 参数解决了这个问题。

File.AppendAllText(windows_directory_path + "zoo.cfg", lines, Encoding.Unicode);

不知道为什么 Encoding.UTF8 / Encoding.ASCII 没有改变结果字符串的格式。

仍然想知道相同的代码如何表现得如此不同。

我不确定这是解决方法还是解决方法。