php 生成 xml 乱码是因为你的数据没有转码.你必须保证你写入文件的编码是utf-8. 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我写入的数据是UFT-8的 ,连数据库都是UTF-8的。。 我看了一下,XML文件是ansi格式的,如果手工把他改为UTF-8编码,就可以使用,不知如何在生成XML的时候将XML文档改为UTF-8编码呢?如果先手工改为UTF-8编码,再重新生成XML后,又变成ansi了。 乱码是什么情况?是说在浏览器中打开,显示乱码,还是说根本打不开?如果能打开,xml的结构是否清晰? 本地用记事本打开,里面是乱码的,浏览器打不开,XML编码格式是ANIS将XML全转换为GB2132后,记事本中文显示,浏览器乱码显示,XML编码格式是ANIS将XML再全转回UTF-8,记事本乱码,将记事本另存为UTF-8格式后查看,记事本乱码,浏览器一切正常。 $fp=fopen("text.txt", "w+"); $text = iconv('gb2312', 'utf-8', "中国");// adding header $text="\xEF\xBB\xBF".$text; fputs($fp, $text); fclose($f); 现在有个新问题,$text = iconv('gb2312', 'utf-8', "中国");因为我的数据本来就是UTF-8,不需要转换,但是为什么不用ICONV,格式就不会变成UTF-8呢?谢谢你,兄弟,一会给你100分 如果数据是utf-8的就不需要转了 直接写就可以了."\xEF\xBB\xBF" 这个头是关键的地方. 但是这样生成的文件还是ANIS ,我晕呀,我要崩溃了 $fp=fopen("test.txt", "w+"); $text = "2222";// adding header $text="\xEF\xBB\xBF" . $text; fputs($fp, $text); fclose($fp);完整代码copy过去,再试试!呵呵! 哇,问题大了,大问题呀。生成的XML居然用不了。好奇怪。好像需要换行才可以用。不知道怎么换行可以用。 现在生成的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">再保存,才可以用。。 把头改一下fwrite($fp," <?xml version='1.0' encoding='utf-8'?>\n\r"); 楼上这方法我试过了,fwrite($fp," <?xml version='1.0' encoding='utf-8'?>\n\r"); 直接输出<?xml version='1.0' encoding='utf-8'?>\n\r <-=不会换行,把这两显示出来了。。 那就在<item item_...前面加个换行,可不可以灵活点啊你用什么解析的xml啊,竟然连换行都检测不出来 解决了,得这样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"); 上面是正确写法 不过还是不行,一定得打开XML随便改点啥,再改回去。保存才可以用 T_T 最新消息,不是改点啥都可以。需要手工打开XML,然后随便选一行,打一下回车,就可以了,这是为何? 不知道返回信息中是否定义了返回xml的headerheader('Content-Type: text/xml; charset=UTF-8');header('Content-Disposition: inline; filename=XML文件名'); 生成后手工一下的XML是可以用的。问题是,手工也只是把一行的回车删一下,再重新打回车就好。看下面的例子原档:回 修改档:回车 修改后:回 车 车这样,本来读取了没有反应的XML就可以读取了。或者另一种修改方法也一样原档:回 修改档: 修改后:回 车 回 车 车 解决了,得这样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... 好主意,下面是我的代码//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> 有关调用类的疑问 是不是在HTML文件中嵌入的PHP脚本都无效? 急求php过滤符号函数~ php怎么取返回上一页链接(在线等答案散分) 用PHP如何截取这样中间的内容,谢谢 求随机生成 如 aPwL96 这种形式的密码 欢迎讨论最佳 IIS+PHP的ISAPI配置方式怎么用模块啊?? com问题 php4.0.6出来了,怎样才能干净的卸载php4.0.5 100M支持PHP及MySQL数据库的空间 是免费的啊~ (转的) <?php?>怎么影响其外的html代码输出? iis php配置问题
是说在浏览器中打开,显示乱码,还是说根本打不开?
如果能打开,xml的结构是否清晰?
$fp=fopen("text.txt", "w+");
$text = iconv('gb2312', 'utf-8', "中国");
// adding header
$text="\xEF\xBB\xBF".$text;
fputs($fp, $text);
fclose($f);
$fp=fopen("test.txt", "w+");
$text = "2222";
// adding header
$text="\xEF\xBB\xBF" . $text;
fputs($fp, $text);
fclose($fp);完整代码copy过去,再试试!
呵呵!
现在生成的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">
再保存,才可以用。。
把头改一下
fwrite($fp," <?xml version='1.0' encoding='utf-8'?>\n\r");
可不可以灵活点啊你用什么解析的xml啊,
竟然连换行都检测不出来
header('Content-Type: text/xml; charset=UTF-8');
header('Content-Disposition: inline; filename=XML文件名');
原档:回 修改档:回车 修改后:回
车 车这样,本来读取了没有反应的XML就可以读取了。或者另一种修改方法也一样
原档:回 修改档: 修改后:回
车 回 车
车
fwrite($fp,'<?xml version="1.0" encoding="utf-8"?>'.chr(13).chr(10));
我觉得应该这样o(∩_∩)o...
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>