2013-12-09 86 views
0

我在顯示包含挪威字符(Æ,Ø,Å等)的數據表(.net)中的MySQL數據時出現問題。我正在笨並在database.php中配置下列變量:Datatables.net,PHP和MySQL的字符集問題

$db['default']['char_set'] = 'utf8'; 
$db['default']['dbcollat'] = 'utf8_general_ci'; 

我也使用函數utf8_encode數據從形式將其插入到數據庫之前,但是當我提取數據的東西被顯示。數據庫還配置有utf8_general_ci。簡而言之,我的問題是:我應該如何配置CodeIgniter和MySQL,以便能夠在沒有問題的情況下插入和從數據庫提取數據?我應該在提交數據之前使用utf8_encode,還是僅僅使用雙重編碼和問題的一部分?

PS!我不認爲數據表是問題的一部分,因爲當數據被髮送到數據表時,該字段已經是空的。

PS2!我不知道爲什麼,但我只面臨大寫的挪威信件的問題。 Ø無法顯示,但工作正常。 Å無法顯示,但å工作正常。

回答

0

我上週有類似的問題&我發現這不是數據庫有問題,而是Codeigniter交易數據的方式。

所以在數據庫中保存的數據之前,每一次,我通過

htmlentities($str, ENT_QUOTES | ENT_HTML401, "UTF-8"); 

,並顯示在HTML數據之前將數據傳遞,我再通過

html_entity_decode($str, ENT_COMPAT | ENT_HTML401, 'UTF-8') 

只是爲了記錄傳遞,我在我的DB配置文件中有這個

$db['default']['char_set'] = 'utf8'; 
$db['default']['dbcollat'] = 'utf8_general_ci'; 
0

嘗試使用這個:

mysql_select_db('db_name'); 
mysql_query("SET NAMES 'utf8'"); 

mysql_query("SET NAMES 'utf8'");選擇數據庫行後