作者superGA ()
看板PHP
標題Re: [請益] 轉換XML檔案編碼的問題
時間Thu Nov 30 19:09:00 2006
※ 引述《jimshsu (jims)》之銘言:
: 想請教各位一個問題
: 最近要處理一堆別人建立好的XML檔
: 原先以為utf-8格式沒問題
: 結果拿到資料就傻眼了~檔案是utf-8沒錯
: 但是所有中文字都變成HTML-ENTITIES
: ex:<title>鴛鴦湖森林</....
: 我原先要把資料讀進mysql的
: 而且xml原始檔還要可以讓人閱讀
: 因為有上千筆檔案..所以我無法一個個從瀏覽器貼到剪貼簿
: 請問我要用什麼方式把中文轉換成utf-8而且不影響xml的tag?
: 感激不盡
: ************************************測試結果
: 依造superGA建議--我試著這樣做..
: $xml_file = "big.xml";(//原始的XML檔案.產生檔案的軟體把中文都變成"HTML-ENTITIES)
: define("out","utf.xml");//輸出檔案
: $xml_meta = new DomDocument;
: $xml_meta->load($xml_file);
: $t = html_entity_decode($xml_meta->saveXML(),ENT_NOQUOTES,"UTF-8");
: $xml = new DomDocument;
: $xml->loadXML($t);
: $xml->save(out);
: *****************************
: 結果...還是不行
: 上面程式我如果列印$t的結果..在瀏覽器是中文(因為瀏覽器自動轉換了)
: 但是把那字串輸出到檔案..我用筆記本打開還是HTML-ENTITIES
: 請問我哪裡寫錯了嗎?~~為何html_entity_decode沒有作用呢?
echo
html_entity_decode("<title>鴛鴦湖森林</title>");
我的系統ok喔
會出現<title>鴛鴦湖..</title>不知道殺洨的東西
你檢查一下版本(PHP 4 >= 4.3.0, PHP 5) 再試試看吧
另外php.net有提到
Note: Any other character sets are not recognized and ISO-8859-1 will be
used instead.
Note: This function doesn't support multi-byte character sets in PHP < 5.
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.119.112.156
推 jimshsu:echo 在螢幕沒問題..可是寫入的檔沒有轉換過來 11/30 23:34
→ jimshsu:請問寫檔的方式有誤嗎? 11/30 23:35
推 jimshsu:解決了...XMLsave似乎有點問題 12/01 00:07
→ jimshsu:改用$fp = fopen("out", "w"); OK!!!! 12/01 00:08