最近,用D写了些文件操作的代码.发现,只能用UltraEdit编辑的文件,才能在std.file中正常使用.如果使用记事本,编辑下,就立刻无法打开了.而这两者有什么不同呢? 并且,前几天,保存一共文件的时候,发现std.file总要在文件的开头加入写不能识别的字符. 这两件事情一联系,感觉到在std.file后隐藏的东西还有很多.
分析了一下文件的二进制格式,发现了问题:
Unicode总会在开头加入FF FE或者是FF FE FF FE, ANSI文件呢:什么也没有.记事本默认的文件就是ANSI格式的.这也是记事本文件,在std.file中打开不正常的原因了.
这就是所谓的BOM问题了.
UTF-8 编码的文件可以分为无 BOM 和 BOM 两种格式。BOM:即 Byte Order Mark .是为了方便编辑器识别文件的一个简单方法,在识别UTF16,UTF32文件都要使用.而UTF8则是可有可无.
再看看std.file,std.stream,这里完全支持多种BOM格式.如此,就好办了,在每次读取文件时,判断是有正确的BOM,有就按BOM指定的格式进行读取每个字符.
总结下:
1.使用EndianStream,读取BOM,来对UTF格式读取.
2.使用任何编辑器,都在保存中文文件时,使用UTF8格式,甚至,仅仅使用UTF8格式.
分享到:
相关推荐
选择一个目录,移除所有文件中的BOM格式,在IDEA中运行eclipse的项目有时候会报BOM格式的错误
利用chardet,cpdetector包获取文件格式,并判断文件类型是否带BOM
我们用Exce建立一个Excle表格,做一个xx.xlt的2003的模版文件,取文件名为:AltiumDesiger PCB BOM Template.xlt。 接下来我们输入自己需要保存的参数。 这里我自己需要的内容如下: ② 表格移动 将Altium...
C#写入文件加上bom头,主要适用于utf8文件
如何解决BOM:先放在服务器可执行目录下,使用 浏览器http://服务器ip/存放路径/bom.php来 访问,填写实际路径执行后可得到存在有BOM的PHP文件,然后再用notepad++打开,在菜单选“格式”->“转为UTF-8无BOM..”即可. ...
批量去除 bom 工具,解决idea下,Java文件有bom文件头无法编译的问题,可自定义文件后缀。递归目录文件删除文件中的bom头
什么是BOM头?如何去除文件中的BOM头 删除文件中的BOM头,使文件变成正常的UTF8文件
解决PB创建UTF-8文件带BOM问题; 2.字段串直接生成XML文件。 由于项目需要,需要字符串转为XML文件,直接用Fileopen进行EncodingUTF8编码后,发现文件实际为UTF-8 BOM编码 问度娘发现有相同问题,但解决方式是利用...
ORCAD 嘉立创SMT BOM导出格式,导出的BOM可直接支持嘉立创SMT贴片,不需要做修改。 ORCAD 嘉立创SMT BOM导出格式,导出的BOM可直接支持嘉立创SMT贴片,不需要做修改。
当上传文件存在中文时,修改上传文件编码为utf-8-bom
RK3399原理图和PCB和BOM表和gerber文件和大量技术文档资料
KiCAD 导出SMT贴片机用的坐标文件和BOM文件 -kicad_tools-master.zip
去除文件中的BOM头信息. 一些文档工具可以打开再保存为无bom格式,但文件太多就很费力,此工具类可以直接运行,直接输入你要修改的文件夹路径即可,可自由调整文件夹深度,进行子级文件夹读取
压缩包内包含 ecj-4.6.2.jar 和 Util.class两个文件 使用说明: 1. 如果你的IDEA是2017.2.2版本,那么直接把ecj-4.6.2.jar放到你的IDEA安装目录下lib文件夹中替换原文件即可 2. 如果你是其他版本的IDEA,那么用压缩...
C#获取去除文件bom头后的内容,可以解决不少乱码问题
选择要遍历的文件夹,输入相应的文件格式,程序会遍历此文件夹下所有相应格式文件,包括子文件夹下的文件删除其BOM头 勾选ANSI转为UTF-8,则会将相应格式但编码为GB2312,GBK,GB18030的文件转为无BOM的UTF-8文件 请...
放到当前文件夹.在浏览器打开. 即可以查找当前目录及下级目录中的带有bom的文件
为什么我这个BOM或坐标文件-bom_cord.zip
本图纸为交通信号控制板 包括 PCB 文件和BOM.本图纸为交通信号控制板 包括 PCB 文件和BOM