NOTES-產生具有BOM的UTF8編碼檔案 - 黑暗執行緒
文章推薦指數: 80 %
File.WriteAllText與StreamWriter在沒有指定Encoding.UTF8時,會產出UTF-8編碼但沒有BOM的檔案; 以下的範例中,只有F2.csv、F4.csv可以正確被Excel開啟, ...
上回有討論過Excel開啟CSV時的中文編碼問題,今天發現關於.NET處理BOM的幾個特性,再補充三則筆記:雖然預設UTF8Encoding的encoderShouldEmitUTF8Identifier參數預設為true,但GetBytes()的結果不會包含BOMFile.WriteAllText與StreamWriter在沒有指定Encoding.UTF8時,會產出UTF-8編碼但沒有BOM的檔案以下的範例中,只有F2.csv、F4.csv可以正確被Excel開啟,原因請見上回文章。
strings="牛,牪,犇";File.WriteAllText("B:\\F1.csv",s);File.WriteAllText("B:\\F2.csv",s,Encoding.UTF8);using(StreamWritersw=newStreamWriter("B:\\F3.csv",false)){sw.WriteLine(s);sw.Close();}using(StreamWritersw=newStreamWriter("B:\\F4.csv",false,Encoding.UTF8)){sw.WriteLine(s);sw.Close();}ShareonFacebookShareonTwitterShareonGoogle+EmailCommentsBethefirsttopostacommentPostacommentCommentNameCaptcha57-25=黑暗執行緒黑暗後花園OrcsWeb:WindowsServerHosting
延伸文章資訊
- 1[Excel教學] 3步驟快速解決打開CSV檔亂碼問題 - impochun blog
原理:既然我下載來的csv檔案編碼(UTF8編碼)excel直接開啟會有問題,那麼我們就來重新做一個Excel看得懂的檔案(加入BOM)。
- 2JAVA輸出帶BOM的UTF-8編碼的檔案 - 程式人生
微軟在UTF-8 中使用BOM 是因為這樣可以把UTF-8 和ASCII 等編碼明確區分開。 否則用Excel開啟CSV檔案有可能是亂碼的示例程式碼如下: response.
- 3Excel 2007 轉換為Csv 檔案時(UTF-8),特殊字元(如希臘字母)
Excel 2010 以前不能輸出UTF-8 的csv 。 有BOM 的UTF-8 csv 則可讀入。 把問題寫到網友看得懂是發問者的責任,讓人花很多時間才搞懂或是才能溝通的文章, ...
- 4utf-8編碼寫出csv檔案Excel開啟亂碼問題解決_U繡花同志
其實是UTF-8檔案的Unicode簽名BOM(Byte Order Mark) ... 在UCS 編碼中有一個叫做"ZERO WIDTH NO-BREAK SPACE"的字元,它的編碼是FEFF。
- 5web 匯出EXCEL亂碼,因為沒有BOM - iT 邦幫忙
用記事本開| 正常顯示用EXCEL開| 亂碼查看記事本編碼| utf-8. 原因因為沒有BOM, ... 怎麼讓它有BOM,我們可以用stream,stream指定UTF8的話,就會自動加上BOM了.