乱码是因为你的数据没有转码.
你必须保证你写入文件的编码是utf-8.

解决方案 »

  1.   

    我写入的数据是UFT-8的 ,连数据库都是UTF-8的。。
      

  2.   

    我看了一下,XML文件是ansi格式的,如果手工把他改为UTF-8编码,就可以使用,不知如何在生成XML的时候将XML文档改为UTF-8编码呢?如果先手工改为UTF-8编码,再重新生成XML后,又变成ansi了。 
      

  3.   

    乱码是什么情况?
    是说在浏览器中打开,显示乱码,还是说根本打不开?
    如果能打开,xml的结构是否清晰?
      

  4.   

    本地用记事本打开,里面是乱码的,浏览器打不开,XML编码格式是ANIS将XML全转换为GB2132后,记事本中文显示,浏览器乱码显示,XML编码格式是ANIS将XML再全转回UTF-8,记事本乱码,将记事本另存为UTF-8格式后查看,记事本乱码,浏览器一切正常。
      

  5.   


    $fp=fopen("text.txt", "w+"); 
    $text = iconv('gb2312', 'utf-8', "中国");
    // adding header 
    $text="\xEF\xBB\xBF".$text; 
    fputs($fp, $text); 
    fclose($f);
      

  6.   

    现在有个新问题,$text = iconv('gb2312', 'utf-8', "中国");因为我的数据本来就是UTF-8,不需要转换,但是为什么不用ICONV,格式就不会变成UTF-8呢?谢谢你,兄弟,一会给你100分
      

  7.   

    如果数据是utf-8的就不需要转了 直接写就可以了."\xEF\xBB\xBF" 这个头是关键的地方.
      

  8.   

    但是这样生成的文件还是ANIS ,我晕呀,我要崩溃了
      

  9.   


    $fp=fopen("test.txt", "w+"); 
    $text = "2222";
    // adding header 
    $text="\xEF\xBB\xBF" . $text; 
    fputs($fp, $text); 
    fclose($fp);完整代码copy过去,再试试!
    呵呵!
      

  10.   

    哇,问题大了,大问题呀。生成的XML居然用不了。好奇怪。好像需要换行才可以用。不知道怎么换行可以用。
      

  11.   


    现在生成的XML是这样的::::
    <?xml version="1.0" encoding="utf-8"?><bcaster autoPlayTime="10"><item item_.....不会换行。然后我用/n/r 就变成<?xml version="1.0" encoding="utf-8"?><bcaster autoPlayTime="10">
    <item item_.....从<item开始会换行。但是上面 <?xml version="1.0" encoding="utf-8"?><bcaster autoPlayTime="10">
    不会换行。现在生成XML文件后,用记事本打开XML文件,然后在<?xml version="1.0" encoding="utf-8"?><bcaster autoPlayTime="10">
    中间打个回车,让他变成
    <?xml version="1.0" encoding="utf-8"?>
    <bcaster autoPlayTime="10">
    再保存,才可以用。。
      

  12.   


    把头改一下
    fwrite($fp," <?xml version='1.0' encoding='utf-8'?>\n\r"); 
      

  13.   

    楼上这方法我试过了,fwrite($fp," <?xml version='1.0' encoding='utf-8'?>\n\r"); 直接输出<?xml version='1.0' encoding='utf-8'?>\n\r  <-=不会换行,把这两显示出来了。。
      

  14.   

    那就在<item item_...前面加个换行,
    可不可以灵活点啊你用什么解析的xml啊,
    竟然连换行都检测不出来
      

  15.   

    解决了,得这样fwrite($fp," <?xml version='1.0' encoding='utf-8'?>\n\r"); 上面这写法是错的fwrite($fp,'<?xml version=".0" encoding="utf-8"?>\r\n');上面的写法是错的 fwrite($fp,"<?xml version='1.0' encoding='utf-8?>\r\n"); 上面是正确写法
      

  16.   

    不过还是不行,一定得打开XML随便改点啥,再改回去。保存才可以用 T_T
      

  17.   

    最新消息,不是改点啥都可以。需要手工打开XML,然后随便选一行,打一下回车,就可以了,这是为何?
      

  18.   

    不知道返回信息中是否定义了返回xml的header
    header('Content-Type: text/xml; charset=UTF-8');
    header('Content-Disposition: inline; filename=XML文件名');
      

  19.   

    生成后手工一下的XML是可以用的。问题是,手工也只是把一行的回车删一下,再重新打回车就好。看下面的例子
    原档:回   修改档:回车 修改后:回
          车                        车这样,本来读取了没有反应的XML就可以读取了。或者另一种修改方法也一样
    原档:回    修改档:          修改后:回
          车           回                 车
                       车
      

  20.   

    解决了,得这样fwrite($fp," <?xml version='1.0' encoding='utf-8'?>\n\r");上面这写法是错的fwrite($fp,' <?xml version=".0" encoding="utf-8"?>\r\n');上面的写法是错的fwrite($fp," <?xml version='1.0' encoding='utf-8?>\r\n");上面是正确写法 不会吧 我看这样的书写不是标准的哦
    fwrite($fp,'<?xml version="1.0" encoding="utf-8"?>'.chr(13).chr(10));
    我觉得应该这样o(∩_∩)o...
      

  21.   

    好主意,下面是我的代码//PHP代码$fp=fopen('xml/bcastr.xml', 'w+'); 
    fwrite($fp,"\xEF\xBB\xBF"); 
    fwrite($fp,'<?xml version="1.0" encoding="utf-8"?>
    '); 
    fwrite($fp,'<bcaster autoPlayTime="10">
    '); 
    $result = mysql_query("select * from new where new_select=1 order by new_id desc limit 0,10",$link);//
    $xmi = 0;
    while($Rs=mysql_fetch_array($result))
    {
    $xmi++;
    fwrite($fp,'<item item_url="../Images/foucs/'.$xmi.'.jpg" link="new/newview.php?id='.$Rs["new_id"].'" itemtitle="'.$Rs["new_title"].'">
    </item>
    '); 
    }
    fwrite($fp,'</bcaster>'); 
    fclose($f);
    //获取
    <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" id=scriptmain name=scriptmain codebase="http://download.macromedia.com/pub/shockwave/cabs/
    flash/swflash.cab#version=6,0,29,0" width="227" height="261" style="float:left;" FLASH">
    <param name="movie" value="/Flash/bcastr.swf?bcastr_xml_url=/xml/bcastr.xml" />
    <param name="quality" value="high">
    <param name=scale value="noscale" />
    <param name="LOOP" value="false" />
    <param name="menu" value="false" />
    <param name="wmode" value="transparent" /> 
    <embed src="/Flash/bcastr.swf?bcastr_xml_url=xml/bcastr.xml" width="227" height="261" loop="false" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" salign="T" name="scriptmain" menu="false" wmode="transparent"></embed>
    </object>