2012-03-23 99 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

回答