默认情况下,找出StreamWriter使用没有BOM的UTF-8。我理解使用UTF-8,但为什么没有BOM? http://referencesource.microsoft.com/#mscorlib/system/io/streamwriter.cs为什么StreamWriter使用不含BOM的UTF-8将文本写入文件?
-2
A
回答
2
因为它是记录这样 - StreamWriter
的StreamWriter默认为,除非另有指定使用UTF8Encoding的一个实例。这个UTF8Encoding的实例没有字节顺序标记(BOM),所以它的GetPreamble方法返回一个空字节数组。
+0
我猜这个文档是基于代码实现的。但我的问题是关于决定。不使用UTF-8中的BOM有什么好处? – muradovm 2014-11-01 20:13:59
+0
汉斯已经为您提供了许多链接之一,讨论关于在UTF8流中使用BOM的价值的争论。事实上,尽管他暗示所有C#程序员都认为BOM中应该包含BOM,但可以说并不是所有人都同意这一点。对你的问题最明显的答案是,.NET设计师认为,默认情况下反对包含BOM的观点比支持它的观点更有说服力。 – 2014-11-01 21:35:38
相关问题
- 1. 为什么StreamWriter无法在c#中将文本写入文件?
- 2. StreamWriter为什么改变它写入文件的文本?
- 3. C++/CLI - 使用的StreamWriter写入文本文件覆盖什么已经存在
- 4. 使用C#中的Streamwriter写入文本文件时出错#
- 5. 如何使用StreamWriter写入csv文件?
- 6. 的StreamWriter写入一个文本文件的内容不正确
- 7. C#StreamWriter未写入文件
- 8. 为什么我的文件不能写入文本插入?
- 9. StreamWriter在写入文本文件时截断文本
- 10. Console.SetOut到StreamWriter,不断写入文本文件
- 11. 将Unicode的UTF8表示写入文件
- 12. 为什么我的StreamWriter没有保存到文本文件?
- 13. C#写入文件时使用UTF8
- 14. 为什么不在Visual Basic中写入我的文本文件?
- 15. 确定没有BOM的文本文件是UTF8还是ASCII
- 16. 如何使用Streamwriter将文件写入桌面
- 17. 如何使用Streamwriter将TextBox文本保存到文本文件
- 18. 为什么不写入文件?
- 19. 信息不写入文件为什么?
- 20. 为什么Python不写入文件?
- 21. 如何字典键写入StreamWriter的文本文件
- 22. 使用streamwriter追加文本文件
- 23. 为什么org.apache.xerces.parsers.SAXParser不会跳过utf8编码xml中的BOM?
- 24. StreamWriter正在将BOM字符65279附加到文件结尾
- 25. 为什么我的脚本不能写入文件?
- 26. 为什么我的脚本不写入文件?
- 27. Javascript和HTML:将文件另存为UTF-8(不含BOM)
- 28. C#类库:StreamWriter写入system32文件夹
- 29. 使用Python3写入ASCII格式的文件,而不是UTF8
- 30. Java:为什么我的文件不能写入文件?
在utf8编码文本中使用BOM [有争议](https://github.com/Joyent公司/节点/问题/ 1918)。字节顺序标记对于对字节顺序敏感的编码是必需的。像utf16和utf32一样,但不是utf8。 Unicode标准也不要求它。 – 2014-11-01 20:12:33
@HansPassant,BOM用于UTF-8在开始时表示文本流以UTF-8编码。对于编码为2个或更多字节的符号很重要。如果没有BOM启发式分析,需要确定文件正在使用什么字符编码。没有这种分析的应用程序可以将没有BOM的文本视为ASCII。 – muradovm 2014-11-01 20:23:10
其中一个原因是,如果使用ASCII(偶然或错误)解码文本,并且字符落入ASCII范围,它将“正常工作”。这与他们希望对读者最大限度宽容的评论是一致的。 – 2014-11-01 20:23:14