2012-06-17 55 views
0

我在phpMyAdmin中設置了一個表格。我沒有改變這些字符或任何東西。我在新行插入了一個文本,當我嘗試選擇該行並使用PHP輸出時,字母顯示爲however,但是如果我嘗試編輯phpMyAdmin中的字段,則字母顯示正確。我做錯了,phpMyAdmin沒有正確的做什麼?ÆØÅ在MySQL中無法正確顯示

+0

什麼是您的表/字段的字符集,以及您在PHP中使用的字符集是什麼?這聽起來像是數據庫或客戶端正在使用不包含這些字符的字符集。 – Ben

+0

我有類似的麻煩。當我用應用程序中的這些字符上傳文本時,它們似乎並沒有在線添加到我的SQL表中。 – Stagleton

+0

以下是這些字符集: –

回答

3

如果你的PHP文件已經是UTF-8編碼的改變您的查詢的字符集,你應該告訴你的數據庫,你需要UTF-8 。而不是擺弄MySQL的配置,只要告訴你的連接對象,你期望的是哪個字符集,數據庫會爲你完成剩下的工作。

這是一個mysqli的連接對象的例子:

$db = new mysqli($dbHost, $dbUser, $dbPw, $dbName); 
$db->set_charset("utf8"); 

之後你的查詢將返回UTF-8編碼的結果。

+0

這確實奏效!我發現它是utf8,但爲什麼在phpMyAdmin中沒有utf8作爲整理的替代方法?我會如何正確地做這件事?我想最好是將數據正確保存在第一位?速度有沒有影響? –

+0

@ Hogwarts的學生 - 排序規則並不決定字符串是如何存儲的,它只決定兩個字符串的比較是如何完成的(至少我是這麼理解的)。 – martinstoeckli

+0

是的,我現在正在閱讀。嗯,他們爲什麼不能像我們在HTML中那樣擁有一個master-charset:UTF-8 ... –

0

首先,你要確定它是否是瀏覽器的charset這是錯誤的,或MySQL。 嘗試將瀏覽器中的字符集交換到utf8,或者如果它已經是iso-8859。

如果不解決它試圖通過做

SET CHARACTER SET charsetname; 
+0

附近使用正確的語法。如果我這樣做,我會得到一個錯誤。 –