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

本文关键字:转换 特殊字符 字符串 文件 | 更新日期: 2023-09-27 18:08:40

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

        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

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

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

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

一般来说,如果您不知道文本的编码,那么您还不如不使用该文本。如果是别人给你的,"送回去"。当他们发送给你时,它必须伴随着双方对所使用的编码的理解。(顺便说一句,不太可能是ASCII码。Encoding.Default在机器与机器之间或用户与用户之间是无用的。

给定结果,文件编码为UTF-16 (Encoding.Unicode)是完全有意义的。使用任何其他编码都是垃圾代码。

现在这很奇怪。上面给出的代码在我的另一台机器上完美地工作。但由于某些我不知道的原因,它在我的新开发环境中不起作用。我通过添加Encoding解决了这个问题。Unicode 参数。

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

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

我还在想为什么同样的代码会表现得如此不同。

我不确定这是修复还是工作。