我使用simpleXML來處理xml文件。它有西里爾字符。我還使用dom_import_simplexml
,importNode
和appendChild
將樹從文件複製到文件並放置到位。 在處理結束時,我做print_r
結果simpleXmlElement
,一切都很好。但我也做asXml('outputfile.xml')
和一些奇怪的事情發生了:沒有用CDATA
(一些標籤主體和所有屬性)包裝的所有西里爾字符變成他們的unicode代碼。SimpleXML以奇怪的方式輸出unicode
例如,print_r
輸出(只是一個片段):
SimpleXMLElement Object ([@attributes] => Array
([NAME] => Государственный аппарат и механизм
[COSTYES] => 3.89983579639 [COSTNO] => 0
[ID] => 9)
[COMMENTYES] => Вы совершенно правы.
[COMMENTNO] => Нет, Вы ошиблись.)))
但在文件asXml
產生,我得到這樣的:
<QUEST NAME="Теория#x434;вухмечей"
style="educ" ID="1">
<DESC><![CDATA[Теория происхождения государства, известная как теория "двух мечей" [2, с.40],
представляет из себя...
]]></DESC>`
我設置使用UTF-8到處都有可能,搜索單詞「simplexml,unicode,cyrillic,asXml等」的每一個組合,但沒有任何工作。
UPD看起來像一些功能使用的是htmlentities()
。所以,感謝voitcus,解決方法是使用html_entity_decode()
作爲建議here。
請閱讀手冊中的討論(註釋):http://www.php.net/manual/en/simplexmlelement.asxml.php – Voitcus
例如[this one](http://www.php.net) /manual/en/simplexmlelement.asxml.php#107137) – Voitcus
謝謝,這工作。我現在想知道,我怎麼沒有自己來解決這個問題。 – ba3a