2010-06-24 52 views
0

我需要一些幫助來理解utf8數據在數據庫中存儲時應該如何看待。當存儲在數據庫中時,utf8數據應該如何顯示?

我正在使用mysql和php,數據庫設置爲utf8,列「p_name」上的排序規則設置爲「utf8_unicode_ci」。

當我通過這個功能插入I它傳遞數據

function convert_charset($in_str) 
    { 
     $cur_encoding = mb_detect_encoding($in_str) ; 
     if($cur_encoding == "UTF-8" && mb_check_encoding($in_str,"UTF-8")) 
     return $in_str; 
     else 
     return utf8_encode($in_str); 
    } 

然後將其插入到數據庫中。當我讀出php中的數據並將其顯示在瀏覽器中時,我在頁面中使用utf8,數據顯示正確,但是我懷疑可能是錯誤的。

以法語單詞éditez這是它應該看起來。然而在我的數據庫裏面,當我看着它時,同一個字被存儲爲éditez。這是正確的嗎?這是如何mysql應該存儲這個詞,或者我有一些設置錯誤?

這裏是我已經設置已經:

  1. php.ini文件 - >設置爲UTF-8
  2. 數據庫 - >設置爲utf8
  3. 表列 - >設置爲utf8_unicode_ci
  4. html頁面 - >設置爲utf8。
+0

嘗試在my.ini中添加'default-character-set = utf8',然後重新添加數據。 – 2010-06-24 20:13:02

+1

如何從數據庫中檢索數據? – Gumbo 2010-06-24 20:13:35

+1

看來你試圖在不理解utf-8的東西上顯示utf-8,那麼你如何查看這些數據呢? – nos 2010-06-24 20:16:30

回答

3

嘗試之後你的數據庫連接設置功能

mysql_query('SET NAMES "utf8"');

+0

偉大的這是做到了。謝謝一堆! – Ronedog 2010-06-24 20:55:50

0

您是否嘗試過你的ConnectionString設置爲UTF-8,以及此查詢?

Server=myServerAddress;Database=myDataBase;Uid=myUsername;Pwd=myPassword; CharSet=UTF8; 
相關問題