看板 PHP 關於我們 聯絡資訊
※ 引述《jimshsu (jims)》之銘言: : 想請教各位一個問題 : 最近要處理一堆別人建立好的XML檔 : 原先以為utf-8格式沒問題 : 結果拿到資料就傻眼了~檔案是utf-8沒錯 : 但是所有中文字都變成HTML-ENTITIES : ex:<title>&#x9D1B;&#x9D26;&#x6E56;&#x68EE;&#x6797;</.... : 我原先要把資料讀進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>&#x9D1B;&#x9D26;&#x6E56;&#x68EE;&#x6797;</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