mysql 不区分声调 'e' 'é' 您所在的位置:网站首页 音调key是什么意思 mysql 不区分声调 'e' 'é'

mysql 不区分声调 'e' 'é'

2024-07-03 00:21| 来源: 网络整理| 查看: 265

遇到这个问题的通常情况是数据字符涉及到多国语言。大家往往认为在创建数据库或表格时指定charset=utf8,数据库就能识别所有字符,结果实际情况却并非这样。

mysql使用charset指定字符如果存储,却依靠另外一个参数--collation--来指定排序规则。这个collation正是mysql是否区分大小学,是否区分声调字符的关键。每个charset有一个默认collation。utf8的默认collation是utf8_general_ci,ci表示case insensitive,即不区分大小写。通过测试,该collation也不区分'e' 和'é','ü'和'u'。 而实际上绝大多collation都不区分,或者部分区分这些带声调或特殊地区的特殊字符。如果一个数据集必须保证区分这类字符,可以指定charset=utf8 collation=utf8_bin。

建表示例

mysql > CREATE TABLE `utf8_test` (          --> `value` varchar(30) NOT NULL DEFAULT '',          --> PRIMARY KEY (`value`)          --> ) ENGINE=InnoDB DEFAULT CHARSET=utf8  COLLATE=utf8_bin;

改表示例

mysql > show create table 'utf8_test'\G

*************************** 1. row ***************************        Table: utf8_test Create Table: CREATE TABLE `utf8_test` (   `value` varchar(30) NOT NULL DEFAULT '',   PRIMARY KEY (`value`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 1 row in set (0.00 sec)

mysql > ALTER TABLE 'utf8_test' CONVERT TO CHARACTER SET utf8 COLLATE utf8_bin;

mysql > show create table 'utf8_test'\G

mysql > show create table utf8_test\G                                                                                                         

 *************************** 1. row ***************************        Table: utf8_test Create Table: CREATE TABLE `utf8_test` (   `value` varchar(30) COLLATE utf8_bin NOT NULL DEFAULT '',   PRIMARY KEY (`value`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin 1 row in set (0.00 sec)



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有