UTF-8带BOM和不带BOM的转换

标签:Linux UTF-8 BOM


【问题】

在linux下如果你使用过的编码不是utf-8你可以使用enca进行转换,然而转换过后的情况是不带bom的uft-8,在windos下我们的编译器采用了msvc2015,而msvc2015不能很好的识别不带bom的utf-8,搞得每次都得使用notepad++打开然后再进行编码转换,可是文件千千万万个...

【分析问题】

根据上面的情况,我们可以将这个问题分为两个子问题进行解决:
问题1.UTF-8带BOM和不带BOM有什么区别?
问题2.UTF-8带BOM和不带BOM的转化?

【解决-问题1:UTF-8带BOM和不带BOM有什么区别?】

(1)打开notepad++,输入123
(2)菜单栏选择 编码-转为UTF-8无BOM编码格式并进行保存
(3)菜单栏选择 插件-HEX-Editor-view in HEX (关于插件HEX-Editor的安装可以直接使用插件管理进行安装,unix下面可以直接使用xxd查看)
(4)可以看到

(5)退出view in HEX
(6)菜单栏选择 编码-转为UTF-8编码格式并进行保存
(7)重复步骤(3)(4)可以看到

Ok,这就知道它们在编码的区别了,理论上的区别呢? 请进行移步到:https://en.wikipedia.org/wiki/Byte_order_mark 进行查看.

【解决-UTF-8带BOM和不带BOM的转化?】

废话不多说,利用Linux(笔者此处测试的环境为:Ubuntu12.04)的主要代码如下:

#clear bom
sed -i  '1s/^\xef\xbb\xbf//' “$你的输入文件,如:mian.cpp”#add bom
sed -I  '1s/^/\xef\xbb\xbf&/' “$你的输入文件,如:mian.cpp”

笔者为了处理一个文件夹下面的代码源文件(.cpp,.h)用了一个函数,当然你也可以直接使用find.

完整代码如下:

#!/bin/bash
add_bom()
{for i in `ls $1`docurrent_path=$1/$iif [ -d $current_path ]   thenchange_code $current_pathelseif [ "${current_path##*.}" = "cpp" ] || [ "${current_path##*.}" = "h" ];then#clear bomsed -i  '1s/^\xef\xbb\xbf//' $current_path#add bomsed -I  '1s/^/\xef\xbb\xbf&/' $current_pathfifidone
}current=`pwd`
add_bom $current

至此完成,关于直接采用find,待后续有需要再进行补充吧。

转载于:https://www.cnblogs.com/hejianglin/p/6683074.html

UTF-8带BOM和不带BOM的转换相关推荐

  1. SAP BOM批量反查成品BOM清单(带BOM组件数量,反查物料清单)

    1. BOM批量反查成品BOM清单(带BOM组件数量,反查物料清单) 代码执行的效果 代码 TABLES :STAS,MARA,MAKT,MARC,T179T. TYPE-POOLS:SLIS.TYP ...

  2. Kicad 导出立创商城标准BOM格式插件---带立创商城元件库---预览(带下载链接)

    CSDN下载链接 导入Kicad之后的效果 描述 生成BOM修改封装之后可以直接导入 立创商城 的 BOM配单 生成BOM格式预览 (注意:生成BOM带输出 supplier part number ...

  3. UTF-8 与 UTF-8 BOM (UTF-8 不带签名与 UTF-8带签名)

    首先明确一点:UTF-8 BOM与UTF-8带签名指的是同一回事,二者指的是UTF-8的同一格式 UTF-8 BOM中的BOM,全称为Byte order mark. 带BOM(签名)的UTF-8文本 ...

  4. PCB BOM也能如此好看?图形化交互式BOM工具Interactive Html Bom使用分享

      发现一个超级有用的BOM生成工具.他有该有的元件清单列表,有PCB二维图,能用交互视图来定位器件在PCB中的位置,不用担心手焊调试时,很难找到元件的位置.生成的BOM是.html文件,用浏览器打开 ...

  5. Android UI(五)云通讯录项目之联系人列表,带侧滑选择,带搜索框

    作者:泥沙砖瓦浆木匠 网站:http://blog.csdn.net/jeffli1993 个人签名:打算起手不凡写出鸿篇巨作的人,往往坚持不了完成第一章节. 交流QQ群:[编程之美 36523458 ...

  6. 在origin 2018中同时画两个图,带errorbar和不带errorbar两种情况

    在origin 2018中同时画两个图,带errorbar和不带errorbar两种情况 在一个图层里同时画两幅图 两幅图坐标可不一致 ①在当前图层中,选中图层左上角的 1 标志 ②右键 1 →图层内 ...

  7. php如何使用代码清除bom,使用php清除bom示例

    核心代码 function checkBOM ($filename) { global $auto; $contents = file_get_contents($filename); $charse ...

  8. 【BOM精讲】BOM 入门基本常识

    Bom定义: Bom里面包含的对象,其中Part.Item.Component都可以称之为部件或者组件. 但在真正系统里面Item一般不称之为组件或者部件,仅代表行号,0010.0020.0030 之 ...

  9. 物料BOM和生产订单BOM的区别

    物料BOM和生产订单BOM的区别 [@more@] 一般企业生产部在SAP创建生产订单的时候,就会产生一个生产订单BOM,这里的生产订单BOM是读取的物料BOM. 由于其它原因,需要修改成品的某几个零 ...

最新文章

  1. HALCON基于形变的模板匹配实现
  2. 看完这20部电影相当于学了经济学(投资理财必看电影)
  3. wpf prism IRegionManager 和IRegionViewRegistry
  4. wxWidgets随笔(13)-wxBoxSizer类Basic Box Sizer(2)
  5. 使用ESP32能驱动电子墨水屏吗?
  6. java防止批量攻击_java 防止 XSS 攻击的常用方法总结
  7. 【案例】RAID卡写策略改变引发的问题
  8. [bzoj1059]矩阵游戏
  9. 计算机考试换机密码,Ami换机,让你轻松转移手机资料!
  10. 个人所得税的申报方式有两种,分别有什么区别?该怎么选?
  11. 谷歌:开源捐赠需分成,否则下架!
  12. 操作系统课程设计 Kernel编译和WinDbg启动 批处理文件
  13. 5G投资理财H5源码+带独家代理二开前端开发/学习培训专用型
  14. 在CSDN持续写博客半年之后,我的薪资涨了45%
  15. 美国专利复审程序中Claim Construction标准变更带来的可能影响
  16. 点击链接元素出现蓝色边框或者出现半透明蓝色背景
  17. AddressSanitizer: heap-buffer-overflow on address 0x602000000534 at pc 0x00000040699d bp 0x7ffce0afd
  18. HTML5 游戏开发快速提升
  19. LARS Lasso
  20. 移动端布局介绍——css像素/物理像素/设备像素比

热门文章

  1. java 字符表 chr3,VBS CHR码值对应列表
  2. mongodb的id的唯一性_mongodb中的objectid是collection中唯一,还是全db唯一,还是全宇宙唯一?...
  3. 我的世界1.11服务器咋发信息,我的世界进服务器怎么注册怎么发信息
  4. hmc如何进入aix系统_linux系统中如何进入退出vim编辑器,方法及区别
  5. vba 自动换行_Excel中quot;强制换行quot;quot;快速求和quot;等操作,这9个AlT键技巧全都包含了...
  6. 中心极限定理_High Dimensional Probability(1) 中心极限定理
  7. psychopy 音频时长代码_PsychoPy入门_03_视频和音频的呈现
  8. html 图片变灰,科技常识:css使图片变灰的实现方法
  9. linux tcp参数调优,Linux TCP 性能调优笔记
  10. 华为重磅反击,鸿蒙来了!