2012-08-31 76 views
0

我寫了一個簡短的腳本,它只是將Unicode字符插入到MySQL數據庫中。它看起來像這樣:爲什麼PhpMyAdmin似乎打破了我的字符編碼?

mysql_connect('localhost', 'root', '*') or die(mysql_error()); 
mysql_select_db('test') or die(mysql_error()); 
mysql_query("INSERT INTO thetable (thefield) VALUES ('äöüß')") or die(mysql_error()); 

我使用記事本++生成腳本,它是UTF-8編碼沒有BOM。

該數據庫和該表有一個utf8_general_ci排序規則。當我使用PhpMyAdmin查看數據時,字符集似乎被破壞了。當我接收到的數據回到我的腳本

äöüß

那麼字符集似乎是好的:字符顯示不正確。我用正確的標題(header('Content-Type: text/html; charset=utf-8'))甩掉了它,一切都看起來不錯。

當我再次使用PhpMyAdmin將數據插入到表格中時,它會在PhpMyAdmin中正確顯示,但只要我從Demo腳本中轉儲它,然後字符集再次被破壞。

我不知道是什麼原因。數據庫的字符集,HTTP頭和腳本的編碼是一致的,我不懷疑PhpMyAdmin工作正常。那麼我還能在哪裏尋找問題?

回答

0

您在原始文件中獲取每個文件的2個字符,因此將其作爲標準ASCII而不是unicode讀取。您可能需要指定連接時使用的MySQL連接所使用的字符集。

我在我的手機,但如果u發表您的數據庫連接的代碼,我可以告訴你如何當我要在電腦

編輯 - 見PHP PDO: charset, set names?

+0

見http://stackoverflow.com/問題/ 4361459/php-pdo-charset-set-names – RobertMaysJr

+0

我不知道我不得不單獨定義編碼!這解決了它。非常感謝! – YMMD

相關問題