繁体   English   中英

XML的PHP​​ MySQL编码问题

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM