C# WriteAllBytes 忽略字符编码
C# WriteAllBytes ignores character encoding
我正在使用以下代码:
File.WriteAllBytes("c:\test.xml", Encoding.UTF8.GetBytes("THIS IS A TEST"))
理论上应该写一个UTF8文件,但我只得到一个ANSI文件。我也试过这个只是为了特别冗长;
File.WriteAllBytes("c:\test.xml", ASCIIEncoding.Convert(ASCIIEncoding.ASCII, UTF8Encoding.UTF8, Encoding.UTF8.GetBytes("THIS IS A TEST")))
还是一样的问题。
我正在通过加载正确读取格式的 TextPad 来测试输出的文件(我使用示例文件进行了测试,因为我知道这些东西有时会有点奇怪)
WriteAllBytes
不是 忽略 编码 - 而是:你已经做了 编码,当你调用 GetBytes
。 WriteAllBytes
的全部意义在于它 写入字节 。字节 没有 编码;相反:编码是从文本(此处为string
)转换为字节(此处为byte[]
)的过程。
UTF-8 与所有 ASCII 字符的 ASCII 相同 - 即 0-127。所有 "THIS IS A TEST"
都是纯 ASCII,因此 UTF-8 和 ASCII 是相同的。
我正在使用以下代码:
File.WriteAllBytes("c:\test.xml", Encoding.UTF8.GetBytes("THIS IS A TEST"))
理论上应该写一个UTF8文件,但我只得到一个ANSI文件。我也试过这个只是为了特别冗长;
File.WriteAllBytes("c:\test.xml", ASCIIEncoding.Convert(ASCIIEncoding.ASCII, UTF8Encoding.UTF8, Encoding.UTF8.GetBytes("THIS IS A TEST")))
还是一样的问题。
我正在通过加载正确读取格式的 TextPad 来测试输出的文件(我使用示例文件进行了测试,因为我知道这些东西有时会有点奇怪)
WriteAllBytes
不是 忽略 编码 - 而是:你已经做了 编码,当你调用 GetBytes
。 WriteAllBytes
的全部意义在于它 写入字节 。字节 没有 编码;相反:编码是从文本(此处为string
)转换为字节(此处为byte[]
)的过程。
UTF-8 与所有 ASCII 字符的 ASCII 相同 - 即 0-127。所有 "THIS IS A TEST"
都是纯 ASCII,因此 UTF-8 和 ASCII 是相同的。