我寫了一個簡短的腳本,它只是將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工作正常。那麼我還能在哪裏尋找問題?
見http://stackoverflow.com/問題/ 4361459/php-pdo-charset-set-names – RobertMaysJr
我不知道我不得不單獨定義編碼!這解決了它。非常感謝! – YMMD