PHP
发布时间:2022-04-09 发布网站:大佬教程 code.js-code.com
大佬教程收集整理的这篇文章主要介绍了PHP 生成的XML以FLASH获取为乱码终极解决,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
经过探索最终解决。记录之,顺便也记录了通用解决方案。如果你也遇到XML<->FLASH乱码情况,可以速查:
1.确信XML绝对没有问题的情况:
首先,flash读取xml出现乱码涉及到Sy
stem.useCodepage这个静态
属性属性 官方描述:“A
Boolean value that tells Flash Player which code page to use to interpret external text file
s.”
默认为
false。
倘若我们使用UTF8编码的外部文本
文件,
PHP100.com 都不用管它,使用非UTF8编码文本
文件且文本中出现
中文字符的话,则需要设置其为true方能让flash读出字符不乱码。
AS3中可先import flash.sy
stem.Sy
stem;然后设置Sy
stem.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也@L_
673_31@乱码!
这种情况处理
方法有二: 把XML
声明部分改成非UTF-8的,比如GB2312,然后设置FLASH的useCodepage=true;
把XML用记事本打开,
使用“另存为”命令保存为UTF-8的即可
也就是让编码声明与
文件本身编码匹配,不能名不符实。
4.PHP源文件不是UTF8编码的,要怎么生成让FLASH支持中文字符的XML呢?也就是我遇到的情况:
PHP是ANSI保存的,使用DOM
生成的XML自然也是ANSI的,
PHP100.com 这个编码的XML
文件中若含有
中文字符,即使声明编码为UTF-8,也无法被正确读取。
在这个前提下,要想FLASH正确读取XML不出现乱码,就必须设置encoding为GB2312。
而
PHP的DOM居然不能用GB2312写
中文字符(不解,请达人指点迷津)?如果new DomDocument('1.0′,'GB2312′
);则在保存XML时会出错:“output conversion
Failed due to conv error,bytes 0xCE 0xD2 0×5D 0×5D”之类的。也就是说我这个ANSI的
PHP只能
生成声明为UTF-8而实际是ANSI的XML
文件,这种
文件当然FLASH读出来乱码(参照第3条)。
在
PHP用UTF-8的声明
生成了XML后,加了一步操作:打开XML
文件改写头部声明把UTF-8替换为GB2312。嘿嘿,FLASH,IE,FF都不出错了!
大佬总结
以上是大佬教程为你收集整理的PHP 生成的XML以FLASH获取为乱码终极解决全部内容,希望文章能够帮你解决PHP 生成的XML以FLASH获取为乱码终极解决所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。