C 儲存檔案為無BOM的utf8格式

2021-09-20 12:00:30 字數 802 閱讀 3588

如圖所示,發現用c#的 file.writealllines 方法,無論怎麼設定,最終生成的檔案都是 pc utf8,也就是crlf,用svn進行提交的時候,顯示左側為utf8,右側為utf8 bom檔案,甚是蛋疼。

最後的解決方法:

file.writealltext(strluafilepath, string.join("\n", filecontentlist.toarray()), new system.text.utf8encoding(false));

稍微普及一下常見的檔案編碼格式,以utf8、bom為例

bom 在檔案頭三位插入了「ef bb bf「

同樣是utf8,在windows、unix、mac下卻並不相同(回車cr ascii碼 13 — \r,換行 lf ascii碼 10 — \n,所以 crlf — \0xd \0xa)。

平台行尾結束符

windows

crlf —— \0xd \0xa,使用 回車 + 換行

unix

lf —— \0xa,表示句尾,只使用換行

maccr —— \0xd,只使用回車

cr —— carriage-return 回車(ascii 13 \r)

lf —— line-feed 換行(ascii 10 \n)

visual studio好像預設就是帶bom的,通常我們約定提交的*.cs檔案全部是無bom的utf8檔案。

C 儲存檔案為無BOM的utf8格式

如圖所示,發現用c 的 file.writealllines 方法,無論怎麼設定,最終生成的檔案都是 pc utf8,也就是crlf,用svn進行提交的時候,顯示左側為utf8,右側為utf8 bom檔案,甚是蛋疼。最後的解決方法 file.writealltext strluafilepath,s...

帶BOM的UTF 8和無BOM 的UTF 8的區別

utf 8 不需要 bom,儘管 unicode 標準允許在 utf 8 中使用 bom。所以不含 bom 的 utf 8 才是標準形式,在 utf 8 檔案中放置 bom 主要是微軟的習慣 順便提一下 把 utf 16 le 稱作 unicode 而又不詳細說明,這也是微軟的習慣 bom byte...

utf 8與utf 8無BOM的區別

utf 8 8 bit unicode transformation format 是一種針對unicode的可變長度字元編碼,又稱萬國碼。bom byte order mark,位元組序標記 utf 8不需要bom來表明位元組順序,但可以用bom來表明編碼方式。字元 zero width no b...