[AS3]as3调用PHP输出XML结构的文件时出现乱码的解决方法
PHP输出XML结构代码示例
- <?php
- header('Content-Type: text/xml');
- include"../config.inc.php";
- $obj = new dbConnection();
- $sql = "select * from CuPlayer_com order by Data_time limit 100";
- $result = $obj -> Connection($sql);
- $xml="";
- while($arrRow = mysql_fetch_assoc($result)){
- $xml .= "<union_data>\n";
- $xml .= "<Data_id>".$arrRow["Data_id"]."</Data_id>\n";
- $xml .= "<Data_pianming>".$arrRow["Data_pianming"]."</Data_pianming>\n";
- $xml .= "<Data_bieming>金刚</Data_bieming>\n";
- $xml .= "<Data_leibie>2</Data_leibie>\n";
- $xml .= "<Data_leixing>27</Data_leixing>\n";
- $xml .= "<Data_diqu>美国</Data_diqu>\n";
- $xml .= "<Data_daoyan>导演</Data_daoyan>\n";
- $xml .= "<Data_zhuyan>主演</Data_zhuyan>\n";
- $xml .= "<Data_shouying>2006</Data_shouying>\n";
- $xml .= "<Data_pianchang>120</Data_pianchang>\n";
- $xml .= "<Data_jishu>1</Data_jishu>\n";
- $xml .= "<Data_peiyin>英语</Data_peiyin>\n";
- $xml .= "<Data_zimu>极酷</Data_zimu>\n";
- $xml .= "<Data_shuoming></Data_shuoming>\n";
- $xml .= "<Data_miaoshu>极酷酷播网页播放器CuPlayer.com</Data_miaoshu>\n";
- $xml .= "<Data_zhuangtai>0</Data_zhuangtai>\n";
- $xml .= "<Data_haibao>61465148.jpg</Data_haibao>\n";
- $xml .= "<Data_dianji>1</Data_dianji>\n";
- $xml .= "<Data_tuijian>1</Data_tuijian>\n";
- $xml .= "<Data_shenhe>1</Data_shenhe>\n";
- $xml .= "<Data_lurenzhe>admin</Data_lurenzhe>\n";
- $xml .= "<Data_gengxintime>2009-02-23 17:47:56</Data_gengxintime>\n";
- $xml .= "<Data_tianjiatime>2009-02-23 15:32:50</Data_tianjiatime>\n";
- $xml .= "</union_data>\n";
- }
- //echo $xml;
- //exit;
- echo "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n";
- echo "<data>\n";
- echo $xml;
- echo "</data>";
- ?>
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的即可
也就是让编码声明与文件本身编码匹配,不能名不符实。
热门文章推荐
- [HLS]做自己的m3u8点播系统使用HTTP Live Streaming(HLS技术)
- [FMS]FMS流媒体服务器配置与使用相关的介绍
- [AS3]什么是M3U8,与HTML5的区别是什么
- AS2.0 让flash自适应全屏,并且不自动缩放
- [AS3]as3.0的sound类常用技巧整理
- [AS3]as3与ByteArray详解、ByteArray介绍、ByteArray用法
- 关于RTMP,RTMPT,RTMPS,RTMPE,RTMPTE协议的介绍
- [JS]分享浏览器弹出窗口不被拦截JS示例