博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C#保存文件为无BOM的utf8格式
阅读量:7033 次
发布时间:2019-06-28

本文共 658 字,大约阅读时间需要 2 分钟。

如图所示,发现用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为例

image

 

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文件。

转载于:https://www.cnblogs.com/meteoric_cry/p/8423382.html

你可能感兴趣的文章
配置静态路由实现两个公司网路互联
查看>>
ShiroFilterFactoryBean源码及拦截原理深入分析
查看>>
boost mutex以及scoped_lock应用
查看>>
小鸡吃米
查看>>
FFmpeg AVFMT_NOFILE宏定义剖析
查看>>
Windows Server 2008 R2活动目录回收站
查看>>
能吃遍全世界的方便面,你也是人生赢家
查看>>
为什么使用LR11录制完,发现脚本每个页面都被录制了两遍?
查看>>
Fedora 删除旧内核
查看>>
浏览器静态资源的版本控制新思路.强制更新指定资源缓存.的探讨
查看>>
NSCalendar
查看>>
Ios 入门 ----WebView 控件
查看>>
scala编译错误
查看>>
VMware Horizon 6 介绍
查看>>
ansible的使用
查看>>
2012年2月10日
查看>>
Linux下Web服务器应用之网站安全-https
查看>>
关于循环嵌套循环
查看>>
Scala中常见的容器 Option(选项)
查看>>
算法-蛇型矩阵
查看>>