2011-04-19 82 views
2

我有一個數據庫,其中表編碼爲utf8。我有一個韓國的價值。這些字符在數據庫中顯示得很好。但是當它們從數據庫中回顯時,我會看到一堆問號。如何讓UTF8使用mysql和php正常工作?

這裏是我的代碼,在連接和select_db語句後:

mysql_query('SET NAMES utf8'); 
$query = 'SELECT * FROM english WHERE id = ' . $_GET['dealerID']; 
$result = mysql_query($query) or die(mysql_error()); 
$row = mysql_fetch_array($result); 

什麼我錯在這裏做什麼? (是的,'英文'是正確的表格)。我嘗試了下面的Michael的建議,將表格編碼爲utf8_general_ci,我得到一個MySQL錯誤。建議?什麼是字符集的正確名稱?

如果我運行在phpMyAdmin查詢,我得到서울시서초구서초1동1425至1410年세중프라자4층/

+0

看起來沒問題(第2行的SQL注入漏洞除外)。什麼是您的網頁/控制檯編碼? – Piskvor 2011-04-19 20:21:27

+0

我試着用utf8的頭文件命令設置頁面,這沒有幫助。現在它是iso-2022-kr – sehummel 2011-04-19 20:22:30

+1

只需要注意.. $ _GET ['dealerID']應該被包裝在mysql_real_escape_string中以防止sql注入。 – 2011-04-19 20:23:08

回答

0

評論this guide其中約UTF8,MySQL和PHP談到一起。

摘要:

  1. 確保瀏覽器知道的頁面是UTF8

    < PHP的頭?( 「內容類型:text/html的;字符集= UTF8」); ? >

  2. 需要在MySQL表爲UTF-8進行設置,以及數據庫中的字符串字段

    utf8_general_ci

  3. 告訴PHP,當它談論到MySQL是UTF8談

    mysqli_set_charset('utf8');

以下是一些more details以及。

+0

看了一下,我不確定這可以幫助我,因爲我需要在「charset = iso-2022-kr」中對頁面進行編碼,以便可以顯示嵌入的韓語。建議? – sehummel 2011-04-19 20:29:27

+0

你確定這是正確的表編碼。當我導入時,我得到#1115 - 未知字符集:'utf8_general_ci' – sehummel 2011-04-19 20:33:33

+0

@ shummel7845你說的是兩件事情有衝突。要麼你的字符串是UTF8格式,要麼是iso-2022-kr ......這是什麼?你的代碼假設他們在utf8中,所以我不確定你爲什麼一直引用iso-2022-kr。 – 2011-04-19 20:35:13