2011-05-09 22 views
0

我有一堆來自拉丁語-1 MySQL數據庫的丹麥語文本,並且它在PHP中回顯時顯示正確。當我需要回顯一些其他丹麥字符時,問題就開始了,這些字符不是從數據庫中取出的。MySQL整理和PHP字符集衝突

我做的是實際輸出頭

Content-Type: text/html; charset=iso-8859-1 

也讓非查詢字符正確顯示爲好。

問題是,當我這樣做查詢字符顯示不正確。

+0

你應該切換到utf-8而不是 – Flask 2011-05-09 09:45:04

回答

3

僅僅因爲數據存儲在latin-1整理表中並不意味着它是拉丁-1編碼。這是由於MySQL在連接SET NAMES設置與排序規則相同時沒有進行任何字符轉換。

我懷疑你有一些UTF8字符存儲在latin1數據庫,這是令人困惑的問題。

如需更多幫助,請您可以添加的細節:

  • 已設置的
  • 詳細MySQL連接編碼,其中「無查詢」字符從
+0

不要使用'SET NAMES',而是使用['mysql_set_charset'](http://php.net/mysql_set_charset)。 – Gumbo 2011-05-09 10:03:13

+0

好吧,如果你使用默認的MySQL適配器,那將會起作用。我在幾周前寫的博客文章中根據適配器提供了不同方法的詳細信息:http://webmonkeyuk.wordpress.com/2011/04/23/how-to-avoid-character-encoding-problems-在-PHP / – 2011-05-09 10:15:23

0

未來使用unicode。 UTF-8 =>正確的方法。因此,在數據庫中設置utf8_unicode_ci,UTF-8爲頁面charset,並在查詢之前設置mysql_query(「SET NAMES UTF8」);