我正在尝试将一些字符串写入文件。
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
请让我知道我做错了什么?
答案 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 没有改变结果字符串的格式。
仍然想知道相同的代码如何表现得如此不同。
我不确定这是解决方法还是解决方法。