2009-08-22 41 views
1

我目前在使用多語言站點。在某些情況下,我需要將其他 語言數據保存在數據庫中。雖然我這樣做並不能保存我輸入的實際數據。 而不是它包含「?????????????????????」。之後,我將排序規則latin1_general_ci更改爲utf8_bin。MYSQL中的latin1_general_ci和utf8_bin有什麼區別

然後它現在工作的很好。

任何人都可以解釋我可用歸類之間的差異在MySQL

在此先感謝。

FERO

+0

也許這是一個不好的做法,但我總是使用latin1。如果您使用隨機應用程序閱讀您的表格,您可能會看到奇怪的字符,但是您的應用程序設置爲charset = UTF-8,它將正確顯示給訪問者。對於一些愚蠢的原因,如果我告訴MySQL使用utf8,我的應用程序在讀取它時會破壞字符串(使用mysql_ *函數,我猜這是與這些「即將被廢棄的」函數有關的問題)。 – Havenard 2009-08-22 06:02:13

回答

5

utf8_bin:字符串中的每個字符的二進制值比較字符串

utf8_general_ci:使用比較字符串:使用通用語言規則和使用不區分大小寫的比較

utf8_general_cs比較字符串一般語言規則和使用區分大小寫的比較

例如,以下內容將使用UTF8_general整理中的任何一種進行評估,但與第Ëutf8_bin歸類: 代碼:

Ä = A 
Ö = O 
Ü = U 

隨着utf8_general_ci整理,他們也將返回true,即使不一樣的情況。

這些都不是固有的「更好」;他們只是有不同的功能。你需要選擇哪一個最適合你的特殊需求。

+0

有什麼方法可以找到所有排序規則的說明。謝謝 – Fero 2009-08-22 06:19:40

+1

mysql> show collat​​ion; – serbaut 2010-01-12 22:53:33