PHP SimpleXML asXML编写ANSI编码文件


PHP SimpleXML asXML writes ANSI encoded file

我正试图将一些内容写入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写入文件或插入数据库,是有风险的