作者Rose7 (ROSE)
看板Flash
标题Re: [问题] 用flash抓php的文字
时间Thu Oct 26 00:32:27 2006
※ 引述《aquarianboy (ED)》之铭言:
: ※ 引述《Rose7 (ROSE)》之铭言:
: : 其实这个问题也搞不懂是要去flash板问还是这边问
: : 我用flash去抓php的文字 可是照我这样的写法显示不出来呢
: : 这是php档的内容
: : --------------------------------------
: : <?
: : $file = fopen("test.txt" , "r") ;
: : $data = fread($file , filesize("test.txt")) ;
: : fclose($file) ;
: : echo $data . "二";
: : ?>
: : ----------------------------------------
: : test.txt的内容是
: : ------------
: : a=一
: : ------------
: : 然後flash的程式码是
: : var Online = new LoadVars();
: : Online.load("test.php");
: : Online.onLoad = function(success:Boolean) {
: : _root.text = Online.a ;
: : }
: : 两个文件档都有存utf8格式
: : 可是flash文字栏显示的是undefined
: : 但如果我把php这一行 echo $data . "二"; 改成
: : echo "a=一" . "二";
: : flash就可以显示出来 一二
: : 这是为什麽呢?
: unicode的东西常会遇到某个关卡没打通就会出现问题
: 从web server的设定、文字档的格式,到flash都有编码的相关设定
: 有的预设使用unicode,有的不是 :)
: 如果第二种方法flash可以显示出文字,但第一种不行
: 有可能是:
: 1. php读取文字档发生错误(可能是找不到档案、档案大小写或是权限问题)
: 2. php读到文字但印不出来(可能是编码问题(我猜的))
: 有没网址可以参考呢?
: 可能可以更快找到问题 :)
测试了一下
发现似乎是因为utf8格式的前三个字元的关系
刚刚把php档用ANSI和UTF8两种格式各跑一次
两边都 echo $data,然後执行php并将浏览器内容存成txt
再用Winhex开启来看,utf8的前面比ANSI的多了EF BB BF
所以flash在读mime格式时,才会发生读不到 a
目前解决方法是将php存成ansi 然後若有从php中产生的中文
则要用函式转成utf8才能给flash读正确
以上是自己推论的 不知道是不是正确 但问题有确实解决了
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 125.230.30.129
1F:推 LPH66:那叫BOM 记事本存的都会有这东西 这相当於Unicode的U+FEFF 10/26 01:43