MySQL排序:拉丁文1\u瑞典文\u ci与utf8\u通用\u ci

MySQL排序:拉丁文1\u瑞典文\u ci与utf8\u通用\u ci,mysql,database-design,collation,Mysql,Database Design,Collation,在MySQL中创建表时,我应该为排序设置什么: latin1\u swedish\u ci或utf8\u general\u ci 什么是排序规则 我一直在使用latin1\u swedish\u ci,这会导致任何问题吗?您可以在这里阅读MySQL 5.5版本的字符集和排序规则: 排序规则支持是支持世界上所有许多书面语言所必需的。例如,在我的语言(丹麦语)中,我们有一个特殊的字符“æ”。听起来像瑞典语、德语、匈牙利语(还有更多的“ä”。该字符也出现在丹麦语中,并带有从其中一种语言输入的

在MySQL中创建表时,我应该为排序设置什么:

  • latin1\u swedish\u ci
    utf8\u general\u ci
什么是排序规则


我一直在使用
latin1\u swedish\u ci
,这会导致任何问题吗?

您可以在这里阅读MySQL 5.5版本的字符集和排序规则:

排序规则支持是支持世界上所有许多书面语言所必需的。例如,在我的语言(丹麦语)中,我们有一个特殊的字符“æ”。听起来像瑞典语、德语、匈牙利语(还有更多的“ä”。该字符也出现在丹麦语中,并带有从其中一种语言输入的单词。由于排序规则的支持,我们可以正确打印和排序相同(按…排序)。没有排序规则支持,这是不可能的

瑞典语排序规则是MySQL默认的拉丁字符集。它与英语配合得很好。英语是如此简单-它可以处理任何东西,因为它没有特殊字符、重音等。但是如果你有另一种经常使用的语言(例如西班牙语),你可以将排序规则更改为西班牙语,因此根据西班牙语规则,西班牙语字符串的排序是正确的

一个非常特别的校勘例子是德国的校勘。它被创建来允许像在德国电话簿中那样进行排序。德语电话簿不遵循德语的一般规则


如果愿意,您可以创建自己的排序规则。排序规则可以编译或采用文本格式。

无论您做什么,都不要尝试在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
DEFAULT CHARACTER SET = utf8_swedish_ci
@Blaisorblade指出,解决这个问题的方法是使用瑞典排序规则中的字符集:

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
DEFAULT CHARACTER SET = utf8_swedish_ci
用于Yii-php框架的cal(calendar)模块的SQL与上述错误代码类似。希望他们现在已经修好了。

试试这些:

<?php
echo htmlspecialchars($string);
echo htmlentities($string);
?>

您可以从以下位置查看更多信息:D


为我工作!不再有菱形:)

在Wamp Server 2.5中,您可以通过进入PHPAdmin,选择需要更改的数据库来更改排序规则。这将为您提供另一组选项卡。选择名为“操作”的选项卡。在该选项卡中将出现一个名为“排序规则”的部分,从下拉列表中选择所需的排序规则,然后选择“开始”。

Re排序规则是什么:可能重复@Pekka的可能重复:问题是关于排序规则而不是编码,因此它不是第二个链接中问题的重复。;)上面代码中的错误是因为您将UTF8字符集与latin1_*排序规则相结合。它应该改用
utf8\u瑞典语\u ci
()。所以,你的答案应该说排序规则是特定于字符集的,一个字符集的排序规则不能与另一个字符集组合。是的,这是一种更简洁的说法,我只是想回答OPs问题,防止他们犯代码中规定的错误。我还应该提供有效的代码。将添加您的。这与MySQL无关。