默認情況下,找出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. 爲什麼不將FileStream作爲Streamwriter的參數寫入文本文件?
- 3. StreamWriter爲什麼改變它寫入文件的文本?
- 4. C++/CLI - 使用的StreamWriter寫入文本文件覆蓋什麼已經存在
- 5. 使用C#中的Streamwriter寫入文本文件時出錯#
- 6. 合併多個文本文件 - StreamWriter不寫入一個文件?
- 7. 如何使用StreamWriter寫入文件?
- 8. 使用StreamWriter和FileStream寫入txt文件
- 9. 如何使用StreamWriter寫入csv文件?
- 10. VB - 使用StreamWriter寫入文件
- 11. 使用Streamwriter寫入現有文件
- 12. C#StreamWriter,寫入不同類的文件?
- 13. 的StreamWriter寫入一個文本文件的內容不正確
- 14. C#StreamWriter未寫入文件
- 15. 爲什麼我的文件不能寫入文本插入?
- 16. 將文件流寫入StreamWriter中c#
- 17. 爲什麼使用UTF-16LE寫入Groovy文件會產生BOM char?
- 18. 使用PERL將BOM插入CSV文件
- 19. StreamWriter在寫入文本文件時截斷文本
- 20. Console.SetOut到StreamWriter,不斷寫入文本文件
- 21. 將Unicode的UTF8表示寫入文件
- 22. 爲什麼我的StreamWriter沒有保存到文本文件?
- 23. 爲什麼不在Visual Basic中寫入我的文本文件?
- 24. C#寫入文件時使用UTF8
- 25. 確定沒有BOM的文本文件是UTF8還是ASCII
- 26. 使用StreamWriter寫入Parallel.Foreach中的不同文件
- 27. windows store應用程序中的streamwriter - 將文本寫入VB中的文件
- 28. new UTF8Encoding(false)仍然寫入utf8 BOM
- 29. 爲什麼不寫入文件?
- 30. python:爲什麼不寫入新文件?
在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