前言:
此时你们对“mysql中文”都比较注意,我们都想要分析一些“mysql中文”的相关内容。那么小编同时在网上收集了一些对于“mysql中文””的相关文章,希望同学们能喜欢,朋友们快快来学习一下吧!背景
项目开发中免不了数据的排序问题,排序中又免不了对中文的处理。今天分享一下如何在mysql中对中文进行排序。
正事儿
现有mysql数据表一个,默认的数据是这个样子的(省略了其它字段):
数据查询的时候不管是按添加时间还是按修改时间排序,领导都不满意,领导说:应该按照名字排序嘛,这样用户就可以预见他想要的数据在什么地方了。我说好,那就改吧。
发现还不是想要的效果,这也不能怪mysql,毕竟中文博大精深,而我们的目标实际是中文的拼音排序,默认情况下mysql是不认识的(虽然我的数据库所有编码都已经设置为了utf-8)。
用'强大'的百度查了下,mysql要想实现中文拼音排序有两种常用的办法:
第一种
不修改表结构,只修改查询语句:
明确的告诉mysql我这个字段要以gbk编码处理(用gb2312也可以的)
第二种
修改表结构不修改查询语句:
重点在红框位置,告诉mysql这个字段按照gbk编码处理(也可以是gb2312_chinese_ci)
效果和第一种方法一样
还有一种我没有验证的方法,网友提供的,大家可以参考下:
如果你使用源码编译MySQL,可以编译MySQL时使用 –with–charset=gbk 参数,这样MySQL就会直接支持中文查找和排序了(默认的是latin1)。也可以用 extra-charsets=gb2312,gbk 来加入多个字符集。
其实看到这里大家都已经明白了,说来说去还是编码的问题在作怪。只要是做开发的,肯定少不了遇到编码的问题,都被编码坑过。特别是数据库,编码问题更重要,上线之前编码如果处理不好,后续可能造成致命的伤。
补充一个我收集的处理mysql编码的资料。
通过 show variables like '%character_set%' 查看已有编码:
修改mysql的编码方式可以有以下几个:
1.通过配置文件修改my.ini(windows下)或/etc/my.cnf(linux下)
分别添加如下内容
[mysqld]
character_server_set=utf8
[mysql]
default-character-set=utf8
[mysql.server]
default-character-set=utf8
[mysql_safe]
default-character-set=utf8
[client]
default-character-set=utf8
2.创建数据库时设置编码
create database test character set utf8;
3.创建表时设置编码
create table test(id int primary key)DEFAULT charset=utf8;
4.修改数据库编码
alter database test character set utf8;
5.修改表默认编码
alter table test character set utf8;
6.修改字段编码
alter table test modify col_name varchar(50) CHARACTER SET utf8;
好了,今天就分享到这里。
标签: #mysql中文 #mysql不显示中文 #mysql支持中文字段 #mysql中文拼音排序 #mysql拼音查询