【发布时间】:2011-01-19 03:45:54
【问题描述】:
我希望能够进行规范化重音字符的查询,例如:
é, è, and ê
在使用 '=' 和 'like' 的查询中都被视为 'e'。我有一行用户名字段设置为“rené”,我希望能够同时匹配“rene”和“rené” '。
我正在尝试使用 MySQL 5.0.8 中的 'collate' 子句来执行此操作。我收到以下错误:
mysql> select * from User where username = 'rené' collate utf8_general_ci;
ERROR 1253 (42000): COLLATION 'utf8_general_ci' is not valid for CHARACTER SET 'latin1'
FWIW,我的表是通过以下方式创建的:
CREATE TABLE `User` (
`id` bigint(19) NOT NULL auto_increment,
`username` varchar(32) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `uniqueUsername` (`username`)
) ENGINE=InnoDB AUTO_INCREMENT=56790 DEFAULT CHARSET=utf8
【问题讨论】:
-
如果将表格字符集更改为
utf8会怎样? -
friedo- 这不是 DEFAULT CHARSET=utf8 的作用吗? (我实际上并没有创建此表;我通过“显示创建表用户”对其进行了逆向工程)。
-
是的,这就是它应该做的。不过,我不知道为什么 MySQL 似乎认为图表集是 latin1,如果你将它设置为 utf8。
标签: sql mysql utf-8 diacritics collate