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

如图所示,发现用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,表示句尾,只使用换行

Mac

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

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

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

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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏黑泽君的专栏

换行符 '\n' 和 回车符 '\r' 的区别?

-----------------------------------------------------------------------------

5.2K10
来自专栏QQ音乐前端团队专栏

Web Components 初探

任何 UI 框架或库最期望目标之一是帮助我们建立通用的模式或约定。

1.2K40
来自专栏iOS开发随笔

React Native 第一篇-Hello World!

14230
来自专栏技术墨客

React新特性——Protals与Error Boundaries

在React 16.x 新增了一个名为“Protals”的特性,直接按照字面意思翻译实在不靠谱。在描述这个特性时,我们还是用官方的英文单词来指定它。Portal...

29340
来自专栏一个会写诗的程序员的博客

h5中performance.timing轻松获取网页各个数据 如dom加载时间 渲染时长 加载完触发时间

在控制台中输入window.performance.timing(html5的属性);

73010
来自专栏web开发

移动端图片放大滑动查看-插件photoswipe的使用

最近在开发项目的时候,遇到一个需求,需要移动端实现放大查看图片的功能,然后我就在网上搜索了一下资料,看到了photoswipe这个插件,后来试了试,确实挺好用的...

99950
来自专栏葡萄城控件技术团队

Spread for Windows Forms快速入门(12)---数据分组(Outlook风格)

你可以设置的显示将行分组变成 OUTLOOK样式。对于大量的数据来说,这样会以用户需要的顺序显示数据。用户可以选择要进行的排序(以列为依据),然后控件会以此为依...

20280
来自专栏Debian社区

Web前端知识体系精简

Web前端技术由html、css和javascript三大部分构成,是一个庞大而复杂的技术体系,其复杂程度不低于任何一门后端语言。而我们在学习它的时候往往是先从...

22730
来自专栏一直在跳坑然后爬坑

Flutter常用widget “Stack”

顾名思义:栈布局,有的文章说是像安卓里面的线性布局,不过这里我觉得更像帧布局吧。 构造方法:

11730
来自专栏前端说吧

js - 预加载+监听图片资源加载制作进度条

这两天遇到一个新需求:一个一镜到底的h5动画。因为功能的特殊性,就要求我们提前监听页面的静态图片是否全部加载完毕。即处理预加载。

94310

扫码关注云+社区

领取腾讯云代金券