我正试图将一些内容写入XML文件,但我确实有特殊字符的问题。
我想写的内容是通过$_GET
提交给脚本的,所以我假设它被正确地解码成UTF-8内容。
$write = $_GET['content'];
的格式如下:
file.php?content=s%F6per
在PHP中,我做了以下操作:
$xml = simplexml_load_file('file.xml');
$newentry = $xml -> addChild('element',$write);
$xml -> asXML($xml_filename);
打开的XML文件是UTF-8编码的。当我编写没有任何"问题字符"的内容时,asXML将再次以UTF-8格式保存文件。一旦我插入特殊字符,它被保存在ANSI编码中,弄乱了文件,因为我将无法打开它(脚本将抱怨不正确的编码)。
我错过了什么?阅读手册给我的印象是,我应该做的一切都很好(即不搞乱$_GET['content']
),所以我不幸的是没有线索。
非常感谢!
您的特殊字符看起来不是UTF-8,而是ISO-8859-1字符
见这里- http://www.degraeve.com/reference/urlencoding.php
可能的解决方案
$newentry = $xml->addChild('element', htmlentities($write));
或
$newentry = $xml->addChild('element', iconv('ISO-8859-1', 'UTF-8', $write));
和离题,请避免使用$_GET
写入文件或插入数据库,是有风险的