2013-03-24 88 views
2

我在我的MySQL數據庫中存儲瑞典語字符時遇到問題。我想通過排序規則utf8-bin將它們存儲在名爲users的表中。即使我使用utf8,字符å ä ö被存儲爲Ã¥ ä ö,我不知道爲什麼。檢索數據並回顯它會給我提供相同的輸出結果,而不是使用奇怪的字符å ä ö。任何幫助表示讚賞。在mysql數據庫中存儲瑞典語字符

+2

確保數據庫連接使用正確的編碼,並在頁面的輸出編碼必須也設置爲utf8。 – knittl 2013-03-24 14:02:30

+0

如何將這些東西設置爲utf8?之前從未遇到過這個問題,所以不知道從哪裏開始。 – 2013-03-24 14:06:27

+0

檢查頁面的標題(例如使用Firefox中的Web Developer工具欄)以確保字符集爲UTF-8。此外,還有一個meta標籤,用於指定字符集 - 我個人會設置以確保。見[這裏](http://stackoverflow.com/questions/4279282/set-http-header-to-utf-8-php)。 – halfer 2013-03-24 14:09:30

回答

6

呼叫

mysql_set_charset("utf8"); 

連接後,使任何查詢之前。

您的數據庫字符集僅用於存儲,不適用於應用程序和數據庫之間的傳輸。

0

您應該確保數據庫連接使用瑞典編碼,並且頁面輸出的編碼也是正確的。不同的編碼會導致許多這些問題。閱讀有關字符編碼的更多信息here.

+0

我該怎麼做?我正在使用這個元標記:'',這是不是會削減它? – 2013-03-24 14:16:47

1

有幾個地方需要注意編碼。

  • 數據庫:你已經在使用的UTF8歸類,所以這很好
  • 數據庫連接:使用mysqli_set_charset設置連接的字符集,如果你使用的mysqli。其他數據庫驅動程序具有類似的功
  • 頁面的輸出編碼:您可以使用HTTP標頭或元標籤。如果您想保持安全,請指定兩者。
0

這裏有幾個參數需要考慮。爲此現在和將來都能很好地工作。與文本的所有不同交互都必須採用相同的編碼。即使在數據庫(聯接工作良好等)。

  1. 插入數據的編碼(插入時設置在頁眉和/或utf_8編碼中)。

  2. 在分貝表的編碼中,(i會建議爲所有utf8_swedish)

  3. 從分貝的頁面的顯示結果的編碼(在報頭中設置此)

  4. 頁面beeing的編碼編輯。它可能以不同的編碼方式打開文檔。如果你不熟悉這個問題,這是一個大問題。以正確的編碼打開和保存文檔。

這裏有一個問題,關於連接編碼,設置正確,但今天它比幾年前更小的問題,因爲變化。

一些筆記。你確定你的數據是這樣存儲的,還是隻是出現錯誤,例如通過phpmyademin?嘗試用打印函數utf8_encode($文本)

或者,utf8_decode()函數,給你一些洞察到打印...