【发布时间】:2018-09-20 08:47:02
【问题描述】:
我正在使用以下代码:
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 来测试输出的文件(我使用示例文件进行了测试,因为我知道这些事情有时会有点奇怪)
【问题讨论】:
-
如果你的字符串只包含 ASCII,那么 ANSI 和 UTF8 是可以互换的。尝试在字符串中添加一些重音字符,然后看看会发生什么。
-
很不清楚你是什么意思...你能解释一下“UTF8文件”对你意味着什么吗?
-
File.WriteAllBytes 确实不 编写将文件标识为包含 utf8 编码文本的 BOM。请考虑使用 StreamWriter。
-
Alexei - 我在 Textpad 中打开输出的文件,它告诉我文件的编码是什么,它显示了 writeallbytes 输出的 ANSI。如果我将该文件保存在 textpad/notepad 中为 utf-8,然后重新加载它,它会显示为 utf-8。所需的输出将是 utf-8 格式的文件。
-
@tonyenkiducx 有问题的建议:如果您需要编写文本 -
File.WriteAllText(@"c:\temp.txt", "test", Encoding.UTF8);更容易,如果您需要编写 XML - 使用 XML 类。 (普通人不太可能通过字符串连接/手动编写正确构造 XML……如果使用常规的 .Net XML 类,其他人会更容易理解代码)
标签: c# encoding utf-8 ascii system.io.file