C#保存文件为无BOM的utf8格式

如图所示,发现用C#的 File.WriteAllLines 方法,无论怎么设置,最终生成的文件都是 PC utf8,也就是CRLF,用SVN进行提交的时候,显示左侧为utf8,右侧为utf8 BOM文件,甚是蛋疼。

最后的解决方法:

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

稍微普及一下常见的文件编码格式,以utf8、BOM为例

image

BOM 在文件头三位插入了“EF BB BF“

同样是Utf8,在Windows、Unix、Mac下却并不相同(回车CR ASCII码 13 — ,换行 LF ASCII码 10 — ,所以 CRLF — xD xA)。

平台

行尾结束符

Windows

CRLF —— xD xA,使用 回车 + 换行

Unix

LF —— xA,表示句尾,只使用换行

Mac

CR —— xD,只使用回车

CR —— Carriage-Return 回车(ASCII 13 )

LF —— Line-Feed 换行(ASCII 10 )

Visual Studio好像默认就是带BOM的,通常我们约定提交的*.cs文件全部是无BOM的utf8文件。

原文地址:https://www.cnblogs.com/meteoric_cry/p/8423382.html