2011-01-22 69 views
12

在MySQL中創建表時,排序規則,我應該怎麼設置:MySQL的歸類:latin1_swedish_ci Vs的utf8_general_ci

  • latin1_swedish_ciutf8_general_ci

什麼是排序規則呢?

我一直在使用latin1_swedish_ci,會導致任何問題嗎?

+1

重新排序是什麼:http://stackoverflow.com/questions/3324900 – 2011-01-22 17:54:50

+0

可能重複[utf8和latin1之間的差異](http://stackoverflow.com/questions/2708958/differences-between-utf8-and -latin1) – 2011-01-22 17:55:29

+0

可能的重複[我不明白整理? (Mysql,RDBMS,字符集)](http://stackoverflow.com/questions/3324900/i-dont-understand-collat​​ion-mysql-rdbms-character-sets) – Crozin 2011-01-22 17:59:41

回答

3

你可以閱讀有關的字符集和歸類爲5.5的MySQL這裏:
Character Sets and Collations in General
Character Sets and Collations in MySQL

的排序規則的支持是必要的,以支持世界上所有的許多文字。例如在我的語言(丹麥語)中,我們有一個特殊的字符'æ'。這聽起來像瑞典,德國,匈牙利(和更多)'ä'。該字符也以丹麥語出現,並從其中一種語言中導入。由於排序規則的支持,我們可以正確打印和相同的排序(ORDER BY ...)。沒有整理支持,這是不可能的。

瑞典歸類是拉丁字符的MySQL默認值。它適用於英語。英語是如此簡單 - 它適用於所有事物,因爲它沒有特殊字符,口音等。但是如果你有另一種經常使用的語言(例如西班牙語),你可以將排序規則更改爲西班牙語,因此對西班牙語字符串進行排序會根據西班牙語言規則是正確的。

排序的一個非常特殊的例子是德國之一。它被創建爲允許像德國電話簿一樣進行排序。德國電話簿不遵循德語的一般規則!

如果您願意,您可以創建自己的排序規則。排序規則可以編譯或文本格式。

6

無論你做什麼,都不要嘗試在mysql中使用默認的瑞典_ci排序規則與utf8(而不是拉丁語),否則你會得到一個錯誤。排序規則必須與正確的字符組配對才能正常工作。這個SQL將失敗,因爲在字符集和校對規則不匹配的:

CREATE TABLE IF NOT EXISTS `db`.`events_user_preference` (
    `user_id` INT(10) UNSIGNED NOT NULL , 
    `email` VARCHAR(40) NULL DEFAULT NULL , 
    PRIMARY KEY (`user_id`)) 
ENGINE = InnoDB 
DEFAULT CHARACTER SET = utf8 
COLLATE = latin1_swedish_ci 

而且@Blaisorblade指出,要解決這個問題的方法是使用的字符集與瑞典校對雲:

DEFAULT CHARACTER SET = utf8_swedish_ci 

Yii php框架的cal(日曆)模塊的SQL與上面的錯誤代碼類似。希望他們現在已經修好了。

-1

在Wamp Server 2.5中,您可以通過進入PHPAdmin,選擇需要更改的數據庫來更改排序規則。這會給你另一組選項卡。選擇稱爲操作的選項卡。在該選項卡中將會有一部分稱爲整理,在下拉列表中選擇您想要的那個,然後選擇去。

相關問題