PHP SimpleXML asXML编写ANSI编码文件

时间:2011-08-04 10:53:08

标签: php utf-8 simplexml

我正在尝试将一些内容写入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']),所以我很遗憾没有线索。

非常感谢!

1 个答案:

答案 0 :(得分:2)

您的特殊字符看起来不是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将某些内容写入文件或插入数据库,这是有风险的