我使用 simpleXML 来处理 xml 文件。它有西里尔字母。我也使用dom_import_simplexml
,importNode
和appendChild
将树从一个文件复制到另一个文件,从一个地方复制到另一个地方。在处理结束时,我print_r
对结果进行了处理simpleXmlElement
,一切正常。但是我也这样做asXml('outputfile.xml')
了,并且发生了一些奇怪的事情:所有未包装的西里尔字符CDATA
(一些标签主体和所有属性)都更改为它们的 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、西里尔文、asXml 等”的每个组合,但没有任何效果。
UPD看起来像使用了某些功能htmlentities()
。因此,感谢voitcus,解决方案是html_entity_decode()
按照此处的建议使用。