转载-mysql字符集
来源:互联网 发布:dps7.05软件 win7 编辑:程序博客网 时间:2024/05/23 14:48
mysql字符集小结
今天同事阿杰兄发现内部一台mysql测试服务器乱码,以前也记录过关于字符集的,今天再补充下
修改mysql的字符集和默认存储引擎
http://blog.csdn.net/wyzxg/article/details/7581415
查看库现有的字符集:
mysql> show variables like '%char%';
+--------------------------+------------------------------+
| Variable_name | Value |
+--------------------------+------------------------------+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | latin1 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /mysql/share/mysql/charsets/ |
mysql和字符集有关的变量
character_set_client:客户端请求数据的字符集
character_set_connection:从客户端接收到数据,然后传输的字符集
character_set_database:默认数据库的字符集,无论默认数据库如何改变,都是这个字符集;如果没有默认数据库,那就使用 character_set_server指定的字符集,
这个变量建议由系统自己管理,不要人为定义。
character_set_filesystem:把os上文件名转化成此字符集,即把 character_set_client转换character_set_filesystem, 默认binary是不做任何转换的
character_set_results:结果集的字符集
character_set_server:数据库服务器的默认字符集
character_set_system:这个值总是utf8,不需要设置,是为存储系统元数据的字符集
一个完整的用户请求的字符集转换流程是
1) mysql Server收到请求时将请求数据从character_set_client转换为character_set_connection
2) 进行内部操作前将请求数据从character_set_connection转换为内部操作字符集,步骤如下
A. 使用每个数据字段的CHARACTER SET设定值;
B. 若上述值不存在,则使用对应数据表的字符集设定值
C. 若上述值不存在,则使用对应数据库的字符集设定值;
D. 若上述值不存在,则使用character_set_server设定值。
3) 最后将操作结果从内部操作字符集转换为character_set_results
假如我们要想设定的字符集是utf8的话,步骤如下:
1)修改配置文件
在[client]下添加如下参数,影响系统变量character_set_client和character_set_connection和character_set_results
default-character-set=utf8
在[mysqld]下添加如下参数,影响系统变量character_set_server和character_set_database
default-character-set=utf8
设置完后,启动mysql,我们只需要查看系统变量是否符合我们的要求即可
character_set_client
character_set_connection
character_set_database
character_set_results
character_set_server
如下三个系统变量不需要关心,不会影响乱码
character_set_filesystem
character_set_system
character_sets_dir
修改结果:
mysql> show variables like '%char%';
+--------------------------+------------------------------+
| Variable_name | Value |
+--------------------------+------------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /mysql/share/mysql/charsets/ |
到这就完了吗?我们还没有调整字符序(collation),字符序确定在同一字符集内字符之间的比较规则
mysql> show variables like '%colla%';
+----------------------+-------------------+
| Variable_name | Value |
+----------------------+-------------------+
| collation_connection | utf8_general_ci |
| collation_database | utf8_general_ci |
| collation_server | utf8_general_ci |
+----------------------+-------------------+
collation_connection:在配置文件里调整[client]default-character-set就可以控制这个参数
collation_server:配置文件里调整[mysqld]collation_server=utf8_general_ci,一定要和[mysqld]default-character-set使用相同字符集
collation_database:在配置文件里调整[mysqld]default-character-set就可以控制这个参数
总的来说要想把字符集调整为utf8的话,在配置文件里需要添加如下几项
[client]
default-character-set=utf8
[mysqld]
default-character-set=utf8
collation_server=utf8_general_ci
命令说明:
mysql> SET NAMES 'utf8'; 它相当于下面的三句命令,当如下三个变量不一致,或显示乱码时,可以用这个命令
mysql> SET character_set_client = utf8;
mysql> SET character_set_results = utf8;
mysql> SET character_set_connection = utf8;
查看安装的字符序
mysql> show collation;
查看安装的字符集
mysql> show character set;
原地址:http://blog.csdn.net/wyzxg/article/details/8779682
- MYSQL 字符集问题[转载]
- MYSQL 字符集问题(转载)
- 转载-mysql字符集
- 小谈MySQL字符集【转载】
- 用命令行设置mysql字符集(转载)
- mysql 字符集
- mysql 字符集
- mysql字符集
- mysql 字符集
- Mysql 字符集
- MySQL字符集
- Mysql字符集
- mysql字符集
- MySQL字符集
- mysql字符集
- Mysql字符集
- Mysql字符集
- mysql字符集
- AngularJS速成教程第二集-AngularJS指令
- Android API 23+ 动态权限申请
- nodejs实现css,js和图片的压缩
- JavaWeb开发中alias拦截器的使用方法
- restclient下载地址
- 转载-mysql字符集
- Android基础之AsyncTask
- svg学习之svg动画
- maven:如何向本地仓库添加依赖
- TCP协议的连接和关闭精讲;三次握手、四次挥手剖析
- html标签中meta属性使用介绍
- Lucene6.1查询所有数据
- 10
- libevent学习笔记【使用篇】——DNS域名解析 evdns