将凡是要写入的字符都用iconv("gb2312", "UTF-8", $string)转换一下

解决方案 »

  1.   

    这个问题我报过BUG,
    http://bugs.php.net/bug.php?id=22778现在再用到utf8的时候经常碰到这种问题,一般的办法是:
    用ultraedit二进制打开utf8 php文件,去掉开头的三个字节,注意:ultraedit最新的版本会默认检测utf8并转换成unicode文件,所以在配置里要把Auto Detection UTF8勾选去掉。
      

  2.   

    php是不认utf-8的bom的,当作文本内容处理
    需要把文件的bom去掉
      

  3.   

    不是所有utf-8網頁都有bom頭的,dw裡好象沒有,在dw裡新建一個utf-8網頁,將代碼復制過去保存覆蓋原來的就行了。
      

  4.   

    设置保存的时候把bom去掉
    ultraedit/uestudio支持这个,应该大部分编辑器都支持
      

  5.   

    如果文件多的话可以用我这程序来搜索BOM,然后用ue搞掉就可以了.
    [code]
    <?php
    /**
     * @author Rollenc
     */
    set_time_limit(99999);
    $d = dirname(dirname(__FILE__));
    recuseFind($d);
    function recuseFind($sd)
    {
    $d = dir($sd);
    while (false !== ($f = $d->read()))
    {
    if($f!='.' && $f!='..' && $f != '.svn') {
    if(is_dir($sd.'\\'.$f))
    {
    //echo $sd.'\\'.$f . "\n";
    recuseFind($sd.'\\'.$f);
    }
    else
    {
    if(strpos($sd.'\\'.$f, '.tpl'))
    {
    deal($sd.'\\'.$f);
    }
    }
    }
    }
    }
    function deal($f)
    {
    if ($stream = fopen($f, 'r')) {
       // print the first 5 bytes
       $bom = stream_get_contents($stream, 5);
       if(strpos($bom, "\xEF\xBB") === 0)
    {
       echo $f . "\n";
    }
       fclose($stream);
    }
    }
    ?>
    [/code]