看板 Flash 關於我們 聯絡資訊
※ 引述《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
LPH66:那叫BOM 記事本存的都會有這東西 這相當於Unicode的U+FEFF 10/26 01:43