在 MySQL 创建表时,Collation 应该设置为什么?
应该选择
Collation 是什么意思?
我一直在使用
应该选择
latin1_swedish_ci
还是 utf8_general_ci
?Collation 是什么意思?
我一直在使用
latin1_swedish_ci
,这会引起问题吗?latin1_swedish_ci
还是 utf8_general_ci
?latin1_swedish_ci
,这会引起问题吗?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代码中有类似于上述错误的代码。希望他们现在已经修复了。
utf8_swedish_ci
代替(http://dev.mysql.com/doc/refman/5.1/en/charset-unicode-sets.html)。因此,您的答案应该只是说明排序规则是特定于字符集的,不能将一个字符集的排序规则与另一个字符集相结合。 - Blaisorblade排序规则支持是为了支持世界上众多语言的书写。例如,在我的语言(丹麦语)中,我们有一个特殊字符“æ”。它的发音像瑞典语、德语、匈牙利语等的“ä”。该字符也出现在从这些语言引入的丹麦语单词中。由于排序规则的支持,我们可以同时正确打印它们,并按相同方式排序(ORDER BY…),使它们相同。如果没有排序规则的支持,这是不可能的。
瑞典语排序规则是拉丁字符集的MySQL默认设置。它适用于英语。英语很容易-它适用于所有内容,因为它没有特殊字符、重音等。但是,如果您经常使用另一种语言(例如西班牙语),则可以将排序规则更改为西班牙语排序规则,以便根据西班牙语规则对西班牙语字符串进行正确排序。
德语排序规则的一个非常特殊的例子。它是为了允许像德国电话簿那样排序而创建的。德国电话簿不遵循德语的一般规则!
如果您愿意,可以创建自己的排序规则。排序规则可以编译或文本格式。
试试这些:
<?php
echo htmlspecialchars($string);
echo htmlentities($string);
?>
你可以从http://php.net/manual/en/function.htmlspecialchars.php查看更多信息。:D
对我有用!不再出现钻石了 :)