[英]PHP MySQL encoding issue with XML
我正在处理包含特殊字符(如项目符号,长破折号等)的第三方XML。
样本XML:
$xml = "<xml><node>• Special Characters</node></xml>";
我的目标是使用PHP解析此XML,并将其插入MySQL数据库中。 我正在使用DomDocument
来解析XML,以使用simplexml_import_dom
从DOM节点获取SimpleXMLElement
对象。
除非我使用utf8_encode编码xml,否则DomDocument
的加载方法将失败。
$doc = new DOMDocument();
$doc->loadXML(utf8_encode($xml));
为了能够解析xml,我了解我需要utf8_encode
函数。 能够解析XML之后,MySQL表中的插入将导致特殊字符显示为?。 或垃圾。 如果解析后在浏览器中显示XML的特殊字符,也将是垃圾。
MySQL表列的文本数据类型为latin1_swedish_ci排序规则。 我在SO上看到了类似的问题,并尝试了运行mysql_query('SET NAMES utf8')
或更改列编码的解决方案,但是它们对我不起作用。
请指教。
问题是您的数据库默认情况下仅适用于Latin1编码。 您将需要将数据库或表(我忘记了,也许两者都)编码更改为UTF8。
你可以试试
alter table TABLE_NAME charset utf8
http://wolfram.kriesing.de/blog/index.php/2007/convert-mysql-db-to-utf8
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.