我正在尝试将一些内容写入 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 http://www.degraeve.com/reference/urlencoding.php
可能的解决方案
$newentry = $xml->addChild('element', htmlentities($write));
Or
$newentry = $xml->addChild('element', iconv('ISO-8859-1', 'UTF-8', $write));
偏离主题,请避免使用$_GET
将某些内容写入文件或插入数据库是有风险的
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)