谢谢回答!
这是关于PHP / MySQL的
用户输入一些文本,然后通过htmlentities()
处理:
$new_userinput = htmlentities($userinput, ENT_QUOTES);
此项存储在XML中:
...
<entrylist>
<list>$new_userinput</list>
<info>$someinfo</info>
</entrylist>
...
xml文件以UTF-8格式存储在数据库中。该网站的HTML还使用UTF-8设置。
我们观察到的是特定的输入,xml的处理方式为:
$p = xml_parser_create();
xml_parse_into_struct($p, $xmlentry, $values, $index);
xml_parser_free($p);`
xml_parse_into_struct()
未正确处理。我们在数据库中看到的内容如下:
...
<note>Creatives share shots—small screenshots.</note>
...
最佳答案
您需要在htmlentities()
中指定字符集,例如
$new_userinput = htmlentities($userinput, ENT_QUOTES, 'UTF-8');
为了显示
echo htmlentities("€", ENT_QUOTES); // â?¬
echo htmlentities("€", ENT_QUOTES, "UTF-8"); // €
关于php - 用户输入的字符破坏了xml_parse_into_struct完成的xml解码,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7327642/