【MySQL】关于字符集和其排序问题
来源:互联网 发布:psd免费源码社区 编辑:程序博客网 时间:2024/06/05 23:08
最近看到一个比较细微容易忽略的问题,做个备忘
字符集
MySQL支持多种字符集,若需支持中文,首选的推荐utf8。服务在默认安装时是latin1,西欧标准。需要手动修改为utf8。
以下为指令
//显示当前数据库支持的所有字符集
mysql> show charset;
//显示当前数据库配置
mysql> show variables;
排序
排序,其实是字符集后面的collections
ci是 case insensitive, 即 “大小写不敏感”, a 和 A 会在字符判断中会被当做一样的;
bin 是二进制, a 和 A 会别区别对待.
例如运行:
SELECT * FROM table WHERE txt = ‘a’
那么在utf8_bin中你就找不到 txt = ‘A’ 的那一行, 而 utf8_general_ci 则可以.
utf8_general_ci 不区分大小写,这个你在注册用户名和邮箱的时候就要使用。
utf8_general_cs 区分大小写,如果用户名和邮箱用这个 就会照成不良后果
utf8_bin:字符串每个字符串用二进制数据编译存储。 区分大小写,而且可以存二进制的内容
unicode和general
utf8_unicode_ci和utf8_general_ci对中、英文来说没有实质的差别。
utf8_general_ci校对速度快,但准确度稍差。
utf8_unicode_ci准确度高,但校对速度稍慢。
旧字符集升级新字符集
以旧的字符集为latin1为例,升级成为utf8的字符集。
原来的表: old_table (default charset=latin1)
新表:new_table(default charset=utf8)
第一步:导出旧数据
复制代码 代码如下:
mysqldump --default-character-set=latin1 -h localhost -u root -B my_db --tables old_table > old.sql
第二步:转换编码(类似unix/linux环境下)
复制代码 代码如下:
iconv -t utf-8 -f gb2312 -c old.sql > new.sql
或者可以去掉 -f 参数,让iconv自动判断原来的字符集
复制代码 代码如下:
iconv -t utf-8 -c old.sql > new.sql
在这里,假定原来的数据默认是gb2312编码。
第三步:导入
修改old.sql,在插入/更新语句开始之前,增加一条sql语句:
"SET NAMES utf8;"
保存。
复制代码 代码如下:
mysql -h localhost -u root my_db < new.sql
导入完成
- 【MySQL】关于字符集和其排序问题
- 关于php和mysql字符集编码问题
- mysql 字符集和排序
- 关于MySql字符集问题
- 关于mysql字符集问题
- 关于mysql中字符集和排序规则说明
- [MySQL] 字符集和排序方式
- [MySQL] 字符集和排序方式
- 关于MySql字符集的问题
- 关于Mysql字符集的问题
- 关于mysql字符集的问题
- 关于MySql字符集的问题
- 关于MySql字符集的问题
- 修改MYSQL的字符集和排序规则
- 设置MySQL设置字符集和排序方式
- 【0012】mysql字符集和排序规则
- 关于mysql字符集的调整问题
- 关于修改mysql字符集的问题
- 翻转链表
- Activity的四种启动模式
- c3p0连接池配置和Dao使用JdbcTemplate模板
- 基础练习 01字串
- 数据库三大范式详解
- 【MySQL】关于字符集和其排序问题
- 作业5.174:链表中倒数第n个节点
- hadoop环境搭建思维导图
- 六、基于xml的bean实例化和依赖注入
- 【图像处理】透视变换 Perspective Transformation
- L2-020. 功夫传人
- Maven实战之Maven仓库
- <meta实现页面跳转
- VS2010平台下调试窗口一闪而过的解决办法总结