MySQL UTF-8 Collat​​ion无法正常工作

时间:2012-10-18 19:54:09

标签: mysql utf-8

  

可能重复:
  Looking for case insensitive MySQL collation where “a” != “ä”

我正在努力解决这个utf8废话,我创建了一个测试表:

CREATE TABLE `test` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(20) CHARACTER SET utf8 NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `name` (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci;

我插入一行:

INSERT INTO `test`(`name`) VALUES ('Cryptïc');

我查询表:

SELECT `name` FROM `test` WHERE `name` LIKE 'Cryptic';

我得到结果集:

+---------+
| name    |
+---------+
| Cryptïc |
+---------+

i不应该等于ï,有点帮助吗?

1 个答案:

答案 0 :(得分:1)

使用utf8_bin代替utf8_general_ci

使用utf8_general_ci,类似字符(如iï)在比较和排序中被视为相同的字符。比较也不区分大小写(因此_ci),这意味着iI也被视为相同。

其他归类,例如utf8_unicode_ci做了更好的排序,但在比较时仍然“失败”。