就不用header嘛
用Js的跳转也可以阿。

解决方案 »

  1.   

    <script language="JavaScript">
    location='main.php';
    </script>
      

  2.   

    你在使用 header() 前已经有内容输出, header() 前是不允许有如何内容输出的
      

  3.   

    wangmingsky(磨碎的沙子)说的对,是这个问题,可以判断一下
    if (!headers_sent()) {
        header('Location: http://www.example.com/');
        exit;
    }utf8格式这个时候是很麻烦,非常容易遇到这种问题
      

  4.   

    不是那个问题。
    不用多说,我们都知道header前面不能有任何输出。用utf-8格式的页面,header就会出现这样的问题,我google了一下,并不是我们编写的错误,而是utf-8自己的问题,偷偷地输出什么三个字符,我们看不到,我不知道怎么解决这样的问题。请前辈教教。例子:
    a.php:<?php
    header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
    ?>就三行,header之前我们没写什么输出吧?你保存成gb2312. ok,没问题。你保存成utf-8,执行,报错:
    Warning: Cannot modify header information - headers already sent by (output started at E:\wwwroot\gavin\org\utf8\p.php:1) in E:\wwwroot\gavin\org\utf8\p.php on line 2
      

  5.   

    //你在使用 header() 前已经有内容输出, header() 前是不允许有如何内容输出的可以考虑用其他脚本语言!
      

  6.   

    我的环境下没有遇到任何问题。
    Apache 2.0.52 + PHP 5.0.2
      

  7.   

    这个问题是UNICODE的BOM引起的使用Dreamweaver2004打开一个utf8编码的文件,按Ctrl+J,可以看到一个BOM的checkbox选项,去掉它。
    BOM占了文件的前三个字节,普通的文本编辑器是看不到的,用winhex打开可以看到前3个字节的bom标记。
    php在这点处理上有些问题,不能正确识别BOM。asp就可以还有,为什么会造成BOM,有些编辑器在保存的时候默认是添加BOM的,有些则不是。
    win2k下的记事本默认是添加的
      

  8.   

    同意楼上的,这个才是问题的关键所在,我也经常碰到这样的问题,将文件头三个字节改掉就可以用,但已经不是utf-8了,所以最好的解决办法改用js吧
      

  9.   

    谁说去掉BOM就不是utf-8编码的了,不要乱说
      

  10.   

    我昨天发了个类似的帖子,现在已解决。
    解决方法正如cloudchen所说。在editplus下也有这个选项:
    解决方法一样:打开editplus->参数选择->文件,将“不添加字节顺序标记到UTF-8文件”前面的勾选上,确定。然后打开你出错的文件,保存一下,就去掉bom了。
    ultraedit也有此类选项。DW上如cloudchen所说。参详贴子 http://community.csdn.net/Expert/topic/3645/3645409.xml?temp=.8103296
      

  11.   

    去掉bom之后utf-8苦旅并未就此结束。其实还存在其他问题。
    特别写了个实践总结,地址在 http://www.gavins.org/weblog/show.php?id=110 。需要的朋友可以去看一下。如果有错误或者疏漏,请指出!谢谢