2012-03-23 59 views
1

我处理包含特殊字符,如子弹,长划等PHP MySQL的编码问题与XML

示例XML第三方XML:

$xml = "<xml><node>• Special Characters</node></xml>"; 

我的目标是解析这个XML使用PHP并将其插入到MySQL数据库中。我正在使用DomDocument解析XML以使用simplexml_import_dom从DOM节点获取SimpleXMLElement对象。

DomDocument的加载方法失败,除非我使用utf8_encode来编码xml。

$doc = new DOMDocument(); 
$doc->loadXML(utf8_encode($xml)); 

为了能够解析xml,我知道我需要utf8_encode函数。在能够解析XML之后,MySQL表中的插入将导致出现特殊字符?或垃圾。即使是解析后显示在浏览器上的XML中的特殊字符也是垃圾。

MySQL表列是文本数据类型,属于latin1_swedish_ci整理。我在SO上看到了类似的问题,并尝试使用他们的解决方案,如运行mysql_query('SET NAMES utf8')或更改列编码,但它们不适合我。

请指教。

+1

哪里'$ xml'来自和whar让你认为你需要'函数utf8_encode()'? – 2012-03-23 23:13:13

+0

你对XML的编码有任何想法吗? 您的表格也必须在utf8上。 – haltabush 2012-03-23 23:14:03

+0

您是否尝试将数据库归类设置为'utf8_general_ci'或其他? – hohner 2012-03-23 23:14:26

回答