·您当前的位置:首页 > 技术教程 > AS2与AS3技术 >

[AS3]as3调用PHP输出XML结构的文件时出现乱码的解决方法

时间:2012-10-12 17:59CuPlayer.com
确信XML绝对没有问题的情况,首先,flash读取xml出现乱码涉及到System.useCodepage这个静态属性属性,AS3中可先import flash.system.System;然后设置System.useCodePage=true

PHP输出XML结构代码示例

  1. <?php 
  2. header('Content-Type: text/xml');  
  3. include"../config.inc.php";      
  4. $obj = new dbConnection();  
  5. $sql = "select * from CuPlayer_com order by Data_time limit 100";  
  6. $result = $obj -> Connection($sql);   
  7. $xml="";  
  8. while($arrRow = mysql_fetch_assoc($result)){  
  9.     $xml ."<union_data>\n";  
  10.     $xml ."<Data_id>".$arrRow["Data_id"]."</Data_id>\n";  
  11.     $xml ."<Data_pianming>".$arrRow["Data_pianming"]."</Data_pianming>\n";  
  12.     $xml ."<Data_bieming>金刚</Data_bieming>\n";  
  13.     $xml ."<Data_leibie>2</Data_leibie>\n";  
  14.     $xml ."<Data_leixing>27</Data_leixing>\n";  
  15.     $xml ."<Data_diqu>美国</Data_diqu>\n";  
  16.     $xml ."<Data_daoyan>导演</Data_daoyan>\n";  
  17.     $xml ."<Data_zhuyan>主演</Data_zhuyan>\n";  
  18.     $xml ."<Data_shouying>2006</Data_shouying>\n";  
  19.     $xml ."<Data_pianchang>120</Data_pianchang>\n";  
  20.     $xml ."<Data_jishu>1</Data_jishu>\n";  
  21.     $xml ."<Data_peiyin>英语</Data_peiyin>\n";  
  22.     $xml ."<Data_zimu>极酷</Data_zimu>\n";  
  23.     $xml ."<Data_shuoming></Data_shuoming>\n";  
  24.     $xml ."<Data_miaoshu>极酷酷播网页播放器CuPlayer.com</Data_miaoshu>\n";  
  25.     $xml ."<Data_zhuangtai>0</Data_zhuangtai>\n";  
  26.     $xml ."<Data_haibao>61465148.jpg</Data_haibao>\n";  
  27.     $xml ."<Data_dianji>1</Data_dianji>\n";  
  28.     $xml ."<Data_tuijian>1</Data_tuijian>\n";  
  29.     $xml ."<Data_shenhe>1</Data_shenhe>\n";  
  30.     $xml ."<Data_lurenzhe>admin</Data_lurenzhe>\n";  
  31.     $xml ."<Data_gengxintime>2009-02-23 17:47:56</Data_gengxintime>\n";  
  32.     $xml ."<Data_tianjiatime>2009-02-23 15:32:50</Data_tianjiatime>\n";  
  33.     $xml ."</union_data>\n";  
  34. }  
  35. //echo $xml;  
  36. //exit;  
  37. echo "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n";  
  38. echo "<data>\n";  
  39. echo $xml;  
  40. echo "</data>";  
  41. ?> 

1.确信XML绝对没有问题的情况:
  首先,flash读取xml出现乱码涉及到System.useCodepage这个静态属性属性
  官方描述:“A Boolean value that tells Flash Player which code page to use to interpret external text files.”默认为false。
  倘若我们使用UTF8编码的外部文本文件,都不用管它,使用非UTF8编码文本文件且文本中出现中文字符的话,则需要设置其为true方能让flash读出字符不乱码。
  AS3中可先import flash.system.System;然后设置System.useCodePage=true;

2.希望PHP生成UTF-8编码的XML:
  要想在XML中存在中文字符,最好使用UTF-8编码。在使用DOM创建XML前声明为$dom_XML = new DomDocument(’1.0′,’UTF-8′);第二个参数对应XML文档声明部分的encoding值。但是注意:这仅仅是声明的编码,最后使用$dom_XML->saveXML();实际生成的xml文件却是和PHP脚本源文件编码格式相同,即“你的PHP是什么编码,生成的文件即什么编码。”

3.XML文件声明编码为UTF-8 ,flash中无论useCodepage设为何值读取都还是乱码
  经常会遇到这种情况,通常是因为:虽然声明部分是UTF-8,但文件本身却不是UTF-8的(我自己就是ANSI编码的,汗)。
  那将会导致一个严重的问题:Firefox浏览器可以正常解释XML,但IE(包括TT等IE内核浏览器)却提示存在错误的字符,Flash也显示乱码!
  这种情况处理方法有二:

  把XML声明部分改成非UTF-8的,比如GB2312,然后设置FLASH的useCodepage=true;把XML用记事本打开,使用“另存为”命令保存为UTF-8的即可
  也就是让编码声明与文件本身编码匹配,不能名不符实。

热门文章推荐

请稍候...

保利威视云平台-轻松实现点播直播视频应用

酷播云数据统计分析跨平台播放器