NOTES-產生具有BOM的UTF8編碼檔案

上回有討論過Excel開啟CSV時的中文編碼問題,今天發現關於.NET處理BOM的幾個特性,再補充三則筆記:

  • 雖然預設UTF8Encoding的encoderShouldEmitUTF8Identifier參數預設為true,但GetBytes()的結果不會包含BOM
  • File.WriteAllText與StreamWriter在沒有指定Encoding.UTF8時,會產出UTF-8編碼但沒有BOM的檔案
  • 以下的範例中,只有F2.csv、F4.csv可以正確被Excel開啟,原因請見上回文章
string s = "牛,牪,犇";
File.WriteAllText("B:\\F1.csv", s);
File.WriteAllText("B:\\F2.csv", s, Encoding.UTF8);
using (StreamWriter sw = 
    new StreamWriter("B:\\F3.csv", false))
{
    sw.WriteLine(s);
    sw.Close();
}
using (StreamWriter sw =
    new StreamWriter("B:\\F4.csv", false, 
        Encoding.UTF8))
{
    sw.WriteLine(s);
    sw.Close();
}
歡迎推文分享:
Published 28 January 2010 06:50 PM 由 Jeffrey
Filed under:


意見

沒有意見

你的看法呢?

(必要的) 
(必要的) 
(選擇性的)
(必要的) 

請輸入以上的數字:

搜尋

Go

<January 2010>
SunMonTueWedThuFriSat
272829303112
3456789
10111213141516
17181920212223
24252627282930
31123456
 
RSS
【工商服務】

Tags 分類檢視
關於作者

一個醉心技術又酷愛分享的Coding魔人,十年的IT職場生涯,寫過系統、管過專案, 也帶過團隊,最後還是無怨無悔地選擇了技術鑽研這條路,近年來則以做一個"有為的中年人"自許。

文章典藏
其他功能

這個部落格


BlogLook Score and Rank

Syndication