UTF-8(BOM,feff) 字节顺序记号
来源:互联网 发布:后氧传感器数据偏高 编辑:程序博客网 时间:2024/06/05 14:18
在linux下做 html与 css文件合并脚本的时候发现读取的 css文件中不管怎么做都会多一表“<reff>”标记,查资料发现这表东西叫做“字节顺序记号”,是UTF-8文件的一部份,一般浏览器中 看不出来,但是用 vim就能看得到。如果直接复制到HTML则会把它当做一个字符,会影响到代码的执行。
由于我用的是VIM工具,所以过滤起来还比较简单,直接删除就好了。其它工具也可以,不过得自己写代码删除了,这个字符var_dump的结果是三个字符。
< ?php
var_dump("<feff>");
?>
结果:string(3) "?"
var_dump("<feff>");
?>
结果:string(3) "?"
有些编辑器,比如M$ Windows的记事本,在创建UTF8编码文件时会在头部添加一个不可见字符。这个字符可以通过vim查看到,而且如果是一个php文件,php4、php5在解析时均会有输出。
原来这个被称作BOM(Byte Order Mark)的不可见字符,是Unicode用来标识内部编码的排列方式的,在UTF-16、UTF-32编码里它是必需的,而在UTF-8里是可选的。因 此,才会出现有的编辑器在文件头部添加添加BOM、而有的语法解析器又不作处理的的混乱情况。
根据w3c里FAQ的建议,解决方法就是,删无赦!
**************************
linux下处理windows utf8文件,发现vim头会多一个<feff>
一般默认创建的文件都是ANSI编码的。用记事本打开这个文件,点"另存为",最下面有个"编码(Encoding)"可以选择,里面有"ANSI,utf8"等选项。
下面介绍用直接使用perl创建一个UTF-8的文件
open( OUT, ">:utf8", "a.txt" ) or die "a.out: $!"; print OUT "\x{feff}"; print OUT "aaaa\n"; close OUT;
反过来,删除文件中的<feff>头
open (FH, '<:utf8',"$_" ) or die $!;
...
s/\x{feff}//;
...
- UTF-8(BOM,feff) 字节顺序记号
- UTF-8(BOM,feff) 字节顺序记号
- php实现替换UTF-8 BOM(feff)
- UTF-8、BOM、<feff>的问题
- UTF-8、BOM、<feff>的问题
- UTF-8、BOM、<feff>的问题
- PHP 去掉UTF-8+BOM 文件字节前缀
- 文本 字节顺序标记(BOM)
- UTF-8 NO BOM & BOM
- bom 头 <feff>的问题
- ANSI UNICODE UTF 字节序 BOM
- UTF的字节序和BOM
- UTF的字节序和BOM
- UTF的字节序和BOM
- UTF-8 BOM
- UTF-8,无BOM
- UTF-8 BOM
- UTF-8去掉BOM
- 台式机上安装双系统(winXP+CentOS),从硬盘安装
- shell 自加自减/函数调用/sleep/vim 替换
- android 布局中的单位及分辨率自解
- REDHAT AS5 中文语言包
- 面向对象(Object Oriented,OO)
- UTF-8(BOM,feff) 字节顺序记号
- Yii使用smarty模板
- IOS应用发布NSLog的注释及使用重定向,把控制台内容写入文件
- Understanding Locking in SQL Server——理解SQL Server中的锁
- JsonCpp Documentation
- kettle设计一些ETL任务时一些常见问题
- maven 深入学习 和配置
- location.href 用法
- 4.2.3 设置Qt Creator使其支持交叉编译
請注意此指令將會把檔案中第一行之外的全數清除。
grep -r -I -l $’^\xEF\xBB\xBF’ /path | xargs sed -i ‘s/^\xEF\xBB\xBF//;q’
可用以下指令嘗試之:
grep -r -I -l $’^\xEF\xBB\xBF’ /path | xargs sed -i ‘s/^\xEF\xBB\xBF//g’