<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></title> 
<link>http://www.jackxiang.com/index.php</link> 
<description><![CDATA[赢在IT，Playin' with IT,Focus on Killer Application,Marketing Meets Technology.]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></copyright>
<item>
<link>http://www.jackxiang.com/post//</link>
<title><![CDATA[今天在调试xml的时候偶遇php bom,一步一步调试得到了解决！及shell里去掉bom的方法。]]></title> 
<author>jack &lt;xdy108@126.com&gt;</author>
<category><![CDATA[WEB2.0]]></category>
<pubDate>Tue, 28 Oct 2008 07:12:39 +0000</pubDate> 
<guid>http://www.jackxiang.com/post//</guid> 
<description>
<![CDATA[ 
	1.新加通过curl的参数就知道是不是有bom在http头<br/>2.对svn里加入 钩子来去掉里面的bom头。<br/>3.对shell怎么去掉bom进行了摘录。&nbsp;&nbsp; 2013-08-14<br/><br/>&nbsp;&nbsp;一同事在输出XML的时候在firefox下没有问题，在IE下提示：<br/><br/>文档的顶层无效。处理资源 &#039;http://public.sina.com.cn/message/program/application/1.php?uid=1&amp;group=0&amp;status=2&amp;charset=utf-8&amp;datatype=xm...<br/><br/>﻿&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;<br/>^<br/><br/><br/>蒙了，我找了整个她的哪个输出的php程序，都没有发现问题，但是在我将源代码保存后，通过editplus查看的时候，发现前面有一个不明飞行物，于是经过一步一步的调试发现原来在底层的数据层有一个utf8编码的bom，通过editplus看不出来，通过zend for eclipse6.1.*也看不出来，但是可以通过vi zend studio看到这个玩意!<br/>&nbsp;&nbsp; vi&nbsp;&nbsp;看到：&nbsp;&nbsp;&lt;feff&gt;<br/>&nbsp;&nbsp; zend studio：看到一个小点。。。<br/>&nbsp;&nbsp; zend studio 通过gbk编码：出现： 锘�<br/>这种问题可以通过:notepad++ 的转换功能给转换为没有bom即可,完毕！<br/><br/>再次追溯原因：<br/>&nbsp;&nbsp;通过svn查到，其出现这个原因是由于以下步骤操作导致的：<br/>1.用记事本建立一个ansi的文本文件为phptest.php ,写入&lt;?php&nbsp;&nbsp;?&gt;用zend studio打开没有发现问题。<br/>2.然后通过记事本打开，另存为utf-8.用zend studio打开发现问题，&lt;?php 前面出现 锘� （GBK编码打开是这样，设为uft-8后出现一个小点。。。）。<br/><br/>总结：<br/>最后，我用记事本建立ansi文件，然后写入&lt;?php ?&gt;,再用editplus打开，然后通过另存为utf8，没有发现改问题，看来确实是记事本的问题！<br/>最好用editplus建立utf8文件，谢谢！<br/><br/>如有bom输出会在setcookie的时候出现下面错误：Cannot modify header information - headers already sent by ....<br/>如果在setcookie之前输出了任何文本内容，便会有上述错误提示。由于页面头部require了若干文件，一行行排查是很麻烦的事情！<br/>解决方法如下：<br/>我在该页面顶部加上：<br/><div class="code">ob_start(); </div><br/>在setcookie之前加上代码：<br/><div class="code">ob_get_clean();</div><br/>这是为了获取setcookie之前页面输出的内容。页面运行后，显示输出了一个空字符串，也就是说，setcookie之前没有任何输出。<br/>避免方法：用vim打开了源文件，发觉vim有打开bomb选项，怀疑因此给代码添加了隐藏的字符串，关闭之： set nobomb<br/><br/><br/><br/><br/><br/><br/>http://hi.baidu.com/jimmyhouse/blog/item/247dd517bb77040fc83d6d2f.html<br/>http://www.phpq.net/research/php-utf8-bom.html<br/>http://www.phpchina.com/html/80/t-37580.html<br/><br/><br/><br/>工作心得<br/>对于上次邮件里面讨论到的PHP BOM问题，我来说来句就当心得吧，其实这个BOM问题一直在我们进行开发的时候经常出现，前些日子在企业邮箱里面第一次遇到这个问题，当时好像是企业的图标LOGO没有办法显示出来，因为&lt;img src=&quot;img.php&quot;&gt;,是img.php去读一个图片的内容然后给img显示，经过长仔细排查出现在输出图片资源前就有输出，那时候用的是notepad+editplus,最后用Zend studio来看这个文件头出现一个锘�字，证明了该问题。<br/><br/>第二次遇到BOM问题，是陈鑫鑫在纸条项目里面输出XML数据到IE浏览器中展现出现XML错误。<br/><br/>第三次也就是我们的记录APP调用外部接口返回用户的昵称出现乱码，经琳琳查也由BOM造成！<br/>为何经常出现这种类似的问题，我看大家都在按照自己的方式来建立和开发PHP，特别是用Notepad来新建文件，系统默认在是ANSI格式，但我们的PHP编码是UTF-8的，于是又通过Notepad的另存为修改为UTF-8格式的，这样也就产生了一个BOM,最后，再用现在统一的开发工具Zend for eclipse去编辑这个带BOM的PHP文件，但BOM依然存在文件当中，它一般是表现不出任何问题，但一旦在页面前不能有输出的情况：如上面我遇到的三种情况它也就显现出来了。<br/><br/>BOM如此讨厌，该如何避免：<br/>建议：<br/>1.&nbsp;&nbsp;切实统一开发工具：统一用Zend for eclipse 来新建PHP文件，和修改PHP文件编码！<br/>2.&nbsp;&nbsp;在项目完成后对目录里面所有的PHP 文件进行遍历驱出有可能出现的BOM。如：用sed批量替换掉bom：（syscore目录和所有下级目录的PHP文件替换）&nbsp;&nbsp; <br/><div class="code">find ./syscore -type f -name &quot;*.php&quot; -exec sed -i &#039;1s/^&#92;xef&#92;xbb&#92;xbf//&#039; &#123;&#125;&nbsp;&nbsp;&#92;;</div><br/><br/><br/><br/><div class="code">&lt;?<br/>//此文件用于快速测试UTF8编码的文件是不是加了BOM，并可自动移除<br/>//By Bob Shen<br/><br/>$basedir=&quot;./paper/tech/trunk/message&quot;; //修改此行为需要检测的目录，点表示当前目录<br/>$auto=0; //是否自动移除发现的BOM信息。1为是，0为否。<br/><br/>//以下不用改动<br/><br/>if ($dh = opendir($basedir)) &#123; <br/>while (($file = readdir($dh)) !== false) &#123; <br/>if ($file!=&#039;.&#039; &amp;&amp; $file!=&#039;..&#039; &amp;&amp; !is_dir($basedir.&quot;/&quot;.$file)) echo &quot;filename: $file &quot;.checkBOM(&quot;$basedir/$file&quot;).&quot; &lt;br&gt;&quot;;<br/>&#125;<br/>closedir($dh);<br/>&#125;<br/><br/>function checkBOM ($filename) &#123; <br/>global $auto;<br/>$contents=file_get_contents($filename);<br/>$charset&#91;1&#93;=substr($contents, 0, 1); <br/>$charset&#91;2&#93;=substr($contents, 1, 1); <br/>$charset&#91;3&#93;=substr($contents, 2, 1); <br/>if (ord($charset&#91;1&#93;)==239 &amp;&amp; ord($charset&#91;2&#93;)==187 &amp;&amp; ord($charset&#91;3&#93;)==191) &#123; <br/>if ($auto==1) &#123; <br/>$rest=substr($contents, 3);<br/>rewrite ($filename, $rest);<br/>return (&quot;&lt;font color=red&gt;BOM found, automatically removed.&lt;/font&gt;&quot;);<br/>&#125; else &#123; <br/>return (&quot;&lt;font color=red&gt;包含BOM&lt;/font&gt;&quot;);<br/>&#125;<br/>&#125; <br/>else return (&quot;未发现BOM&quot;);<br/>&#125;<br/><br/>function rewrite ($filename, $data) &#123; <br/>$filenum=fopen($filename,&quot;w&quot;);<br/>flock($filenum,LOCK_EX);<br/>fwrite($filenum,$data);<br/>fclose($filenum);<br/>&#125;<br/>?&gt;</div><br/><br/><br/><br/><br/><br/><div class="code">&lt;?php&nbsp;&nbsp;<br/>&nbsp;&nbsp;/*<br/>&nbsp;&nbsp;<br/>&nbsp;&nbsp;查找一个目录里面的UTF-8 Born 头<br/><br/>&nbsp;&nbsp;用法<br/>&nbsp;&nbsp;&nbsp;&nbsp;/opt/bin/php GetUtf8Born.php &#123;dir&#125;<br/><br/>&nbsp;&nbsp;例如<br/>&nbsp;&nbsp;&nbsp;&nbsp;/opt/bin/php GetUtf8Born.php /opt/www/<br/><br/>&nbsp;&nbsp;*/<br/><br/>&nbsp;&nbsp;$is_fix_file = 1; //定义是否修复文件 1 为不修复 2 为修复<br/>&nbsp;&nbsp;<br/>&nbsp;&nbsp;<br/>&nbsp;&nbsp;$d = $_SERVER&#91;&#039;argv&#039;&#93;&#91;1&#93;;<br/><br/>&nbsp;&nbsp;if (!is_dir($d)) exit(&quot;Not Dir&#92;n&quot;);<br/><br/>&nbsp;&nbsp;$shell = &quot;/usr/bin/find $d -type f&quot;;<br/><br/>&nbsp;&nbsp;$r = exec($shell, $s_r);<br/><br/>&nbsp;&nbsp;if(!empty($s_r))<br/>&nbsp;&nbsp;&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;foreach($s_r as $file)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(GetBorn($file))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo $file . &quot;&#92;n&quot;;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if($is_fix_file == 2)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FixBorn($file);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;<br/>&nbsp;&nbsp;<br/>&nbsp;&nbsp;exit;<br/><br/>&nbsp;&nbsp;function FixBorn($file)<br/>&nbsp;&nbsp;&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;if(!is_file($file))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return false; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;$file_base_name = basename($file);<br/>&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;$file_path = dirname($file);<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;$r = ReadF($file, $file_string);<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;if(!$r)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return false;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;//Utf-8 头占用3个字符占位 去掉即可<br/>&nbsp;&nbsp;&nbsp;&nbsp;$new_string = substr($file_string, 3);<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;//开始备份文件<br/>&nbsp;&nbsp;&nbsp;&nbsp;if (!copy($file, $file_path . &quot;/Utf8Bom_&quot; . $file_base_name)) <br/>&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return false;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;// 写入新文件<br/>&nbsp;&nbsp;&nbsp;&nbsp;if(!WriteF($file, $new_string))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return false;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;return true;<br/><br/>&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;<br/>&nbsp;&nbsp;function ReadF($file, &amp;$string)<br/>&nbsp;&nbsp;&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;$fp = fopen($file, &quot;r&quot;);<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;if(!$fp) <br/>&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return false;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;while (!feof ($fp)) <br/>&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$string&nbsp;&nbsp;.= fgets($fp, 1024);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;fclose($fp);<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;return true;<br/>&nbsp;&nbsp;&#125;<br/><br/>&nbsp;&nbsp;function WriteF($file, $string)<br/>&nbsp;&nbsp;&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;$fp = fopen($file, &quot;w+&quot;);<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;if(!$fp &#124;&#124; !is_writable($file))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return false;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;if (!fwrite($fp, $string)) <br/>&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return false;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;fclose($fp);<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;return true;<br/><br/>&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;<br/>&nbsp;&nbsp;function GetBorn($file)<br/>&nbsp;&nbsp;&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;if(!is_file($file))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return false; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;$fp = fopen($file, &quot;r&quot;);<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;$s = fgets($fp, 64);<br/>&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;fclose($fp);<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;$s = trim(bin2hex($s));<br/>&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;//if (strpos($s, &quot;efbbbf&quot;) !== false)<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;if (substr($s, 0, 6) == &quot;efbbbf&quot;)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return true;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;return false;<br/>&nbsp;&nbsp;&#125;<br/>?&gt;</div><br/><br/>补充：<br/>bluexchen(陈胜益) 17:44:39<br/><br/><div class="code">&lt;?php<br/><br/>$aa = headers_sent();<br/>var_dump($aa);<br/><br/><br/>session_start();<br/>if (isset($_SESSION&#91;&#039;test_sess&#039;&#93;))&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp; $_SESSION&#91;&#039;test_sess&#039;&#93;++;<br/>&#125;else&#123;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp; $_SESSION&#91;&#039;test_sess&#039;&#93; = 0;<br/>&#125;<br/>echo $_SESSION&#91;&#039;test_sess&#039;&#93;;<br/>?&gt;;</div><br/><br/><br/><br/><br/>一：<br/>用Shell如何清除一个目录下所有带BOM的文件中的BOM信息：<br/>在Linux下的SVN中的文件，可能由于开发人员的编辑器的问题，上传上来后的文件带有utf8的BOM，会造成页面访问的问题，现在需要一个shell命令，一键清除一个目录下所有带BOM的文件中的BOM信息。<br/>grep -r -I -l $&#039;^&#92;xEF&#92;xBB&#92;xBF&#039; /path &#124; xargs sed -i &#039;s/^&#92;xEF&#92;xBB&#92;xBF//g&#039;<br/>来自：http://www.dewen.org/q/4111<br/><br/>二：<br/>使用Shell去除BOM：<br/>发现有些文档在Shell下面处理的时候,第一个字节总是无法正常显示,出现乱码. 后来发现原来是BOM在作怪,BOM一共占用了3个字节. 通过UE可以在保存的时候,选择不保存BOM来去除.<br/><br/>但是我既然是在Linux下面做处理,为什么不直接通过Shell脚本来处理呢.查了资料之后发现下面的命令可以实现. <br/>echo -ne &#039;&#92;xef&#92;xbb&#92;xbf123456&#039; &#124; awk &#039;&#123;if(NR==1)sub(/^&#92;xef&#92;xbb&#92;xbf/,&quot;&quot;); print&#125;&#039;<br/><br/>-ne是确保可以打印出16进制<br/>&#92;xef&#92;xbb&#92;xbf是UTF8 BOM的16进制表示<br/>awk 后面命令意思就是,如果第一行是以UTF8 的BOM开头,则去除<br/><br/>BOM的详细解释<br/>http://www.cnblogs.com/chengmo/archive/2010/10/30/1864004.html <br/><br/>来自：http://flyfoxs.iteye.com/blog/1485713<br/><br/><br/><br/>shell&gt; curl -s http://phone.10086.cn/ &#124; head -1 &#124; sed -n l<br/>&#92;357&#92;273&#92;277&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Transitional&#92;<br/>//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;&gt;&#92;r$<br/><br/>如上所示，前三个字节分别是357、273、277，这就是八进制的BOM。<br/><br/><br/> curl -s http://phone.10086.cn/ &#124; head -1 &#124; hexdump -C<br/>00000000&nbsp;&nbsp;ef bb bf 3c 21 44 4f 43&nbsp;&nbsp;54 59 50 45 20 68 74 6d&nbsp;&nbsp;&#124;...&lt;!DOCTYPE htm&#124;<br/>00000010&nbsp;&nbsp;6c 20 50 55 42 4c 49 43&nbsp;&nbsp;20 22 2d 2f 2f 57 33 43&nbsp;&nbsp;&#124;l PUBLIC &quot;-//W3C&#124;<br/>00000020&nbsp;&nbsp;2f 2f 44 54 44 20 58 48&nbsp;&nbsp;54 4d 4c 20 31 2e 30 20&nbsp;&nbsp;&#124;//DTD XHTML 1.0 &#124;<br/>00000030&nbsp;&nbsp;54 72 61 6e 73 69 74 69&nbsp;&nbsp;6f 6e 61 6c 2f 2f 45 4e&nbsp;&nbsp;&#124;Transitional//EN&#124;<br/>00000040&nbsp;&nbsp;22 20 22 68 74 74 70 3a&nbsp;&nbsp;2f 2f 77 77 77 2e 77 33&nbsp;&nbsp;&#124;&quot; &quot;http://www.w3&#124;<br/>00000050&nbsp;&nbsp;2e 6f 72 67 2f 54 52 2f&nbsp;&nbsp;78 68 74 6d 6c 31 2f 44&nbsp;&nbsp;&#124;.org/TR/xhtml1/D&#124;<br/>00000060&nbsp;&nbsp;54 44 2f 78 68 74 6d 6c&nbsp;&nbsp;31 2d 74 72 61 6e 73 69&nbsp;&nbsp;&#124;TD/xhtml1-transi&#124;<br/>00000070&nbsp;&nbsp;74 69 6f 6e 61 6c 2e 64&nbsp;&nbsp;74 64 22 3e 0d 0a&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#124;tional.dtd&quot;&gt;..&#124;<br/><br/>如上所示，前三个字节分别是EF、BB、BF，这就是十六进制的BOM。<br/><br/><br/> 注：用到了第三方网站的页面，不能保证例子始终可用。 实际做项目开发时，可能会面对成百上千个文本文件，如果有几个文件混入了BOM，那么很难察觉，如果没有带BOM的UTF-8文本文件，可以用vi杜撰几个，相关命令如下：<br/><br/> 设置UTF-8编码：<br/><br/>:set fileencoding=utf-8<br/><br/>添加BOM：<br/><br/>:set bomb<br/><br/>删除BOM：<br/><br/>:set nobomb<br/><br/>查询BOM：<br/><br/>:set bomb?<br/><br/>如何检测UTF-8编码中的BOM呢？<br/><br/>shell&gt; grep -r -I -l $&#039;^&#92;xEF&#92;xBB&#92;xBF&#039; /path<br/><br/>如何删除UTF-8编码中的BOM呢？<br/><br/>shell&gt; grep -r -I -l $&#039;^&#92;xEF&#92;xBB&#92;xBF&#039; /path &#124; xargs sed -i &#039;s/^&#92;xEF&#92;xBB&#92;xBF//;q&#039;<br/><br/>推荐：如果你使用SVN的话，可以在pre-commit钩子里加上相关代码用以杜绝BOM。<br/><br/>#!/bin/bash<br/><br/>REPOS=&quot;$1&quot;<br/>TXN=&quot;$2&quot;<br/><br/>SVNLOOK=/usr/bin/svnlook<br/><br/>for FILE in $($SVNLOOK changed -t &quot;$TXN&quot; &quot;$REPOS&quot; &#124; awk &#039;/^[AU]/ &#123;print $NF&#125;&#039;); do<br/>&nbsp;&nbsp;&nbsp;&nbsp;if $SVNLOOK cat -t &quot;$TXN&quot; &quot;$REPOS&quot; &quot;$FILE&quot; &#124; grep -q $&#039;^&#92;xEF&#92;xBB&#92;xBF&#039;; then<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo &quot;Byte Order Mark be found in $FILE&quot; 1&gt;&amp;2<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exit 1<br/>&nbsp;&nbsp;&nbsp;&nbsp;fi<br/>done<br/><br/>来自：http://huoding.com/2011/05/14/78
]]>
</description>
</item><item>
<link>http://www.jackxiang.com/post//#blogcomment</link>
<title><![CDATA[[评论] 今天在调试xml的时候偶遇php bom,一步一步调试得到了解决！及shell里去掉bom的方法。]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>http://www.jackxiang.com/post//#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>