C#保存文件爲無BOM的utf8格式

如圖所示,發現用C#的 File.WriteAllLines 方法,不管怎麼設置,最終生成的文件都是 PC utf8,也就是CRLF,用SVN進行提交的時候,顯示左側爲utf8,右側爲utf8 BOM文件,甚是蛋疼。編碼

 

最後的解決方法:spa

File.WriteAllText(strLuaFilePath, string.Join("\n", fileContentList.ToArray()), new System.Text.UTF8Encoding(false));blog

 

稍微普及一下常見的文件編碼格式,以utf八、BOM爲例ci

image

 

BOM 在文件頭三位插入了「EF BB BF「string

一樣是Utf8,在Windows、Unix、Mac下卻並不相同(回車CR ASCII碼 13 — \r,換行 LF ASCII碼 10 — \n,因此 CRLF — \0xD \0xA)。it

平臺io

行尾結束符table

Windowscoding

CRLF —— \0xD \0xA,使用 回車 + 換行List

Unix

LF —— \0xA,表示句尾,只使用換行

Mac

CR —— \0xD,只使用回車

 

CR —— Carriage-Return 回車(ASCII 13 \r)

LF —— Line-Feed 換行(ASCII 10 \n)

 

Visual Studio好像默認就是帶BOM的,一般咱們約定提交的*.cs文件所有是無BOM的utf8文件。

相關文章
相關標籤/搜索