2011-11-30 45 views
1

在我讀RSS的時刻饋送可在任何類型的字符進行編碼,使用simplexml_load_file();存儲RSS數據時成MySQL表

字符集的問題這些進料,然後通過在PHP環和一些部分被插入到所有表utf8通用的utf8 mysql數據庫中。

當被插入到表中我可以看到「被替換爲’和 - 選自表背時和在一個PHP文件中所示被替換爲â€「

然後,這些奇怪的字符被示出。

我試過utf8_decode和utf8_encode插入和從數據庫中選擇,但這沒有幫助,我做錯了什麼?

+0

Whe n在處理各種/未知編碼中的數據時,您需要確保將編碼轉換爲內部一致,並採取所有常規預防措施以確保您的編碼在任何步驟中都不會出現亂碼。你現在在做什麼,你現在怎麼做? – deceze

回答

0

mysql_query('SET CHARACTER SET utf8');您的插入之前和選擇查詢

+0

這個修復了我,謝謝! – Dan

0

什麼是在您輸入數據的數據庫表上設置的字符集和默認排序規則?

[編輯]

這裏實測值:http://www.php.net/manual/en/function.simplexml-load-file.php#92969

尼爾技術neilanddeb Dort的COM17-Aug-2009 01:00
由於我的XML文件的編碼是UTF-8和 編碼的我的網頁是iso-8859-1我收到了一些奇怪的字符,例如'而不是一個正確的單引號。

解決方案結果很難找到,但很容易實現。

http://uk3.php.net/manual/en/function.iconv.php

使用的iconv()函數,你可以轉換從一個encodign到另一個時,TRANSLIT選擇似乎最適合我的需要。這是我的例子:

<?php 
// convert string from utf-8 to iso8859-1 
$horoscope = iconv("UTF-8", "ISO-8859-1//TRANSLIT", $horoscope); 
?> 

,我發現這個頁面上的解決方案...
http://coding.derkeiler.com/Archive/PHP/comp.lang.php/2008-04/msg00365.html
希望這有助於

+0

字符集是utf8,排序規則是utf8_general_ci。 – Dan

0

嘗試

$xml = file_get_contents($file); 
$xml = iconv("UTF-8", "UTF-8//IGNORE", $xml); 
simplexml_load_string($xml);