码迷,mamicode.com
首页 > 数据库 > 详细

MySQL 中文乱码解决

时间:2015-07-16 19:51:01      阅读:119      评论:0      收藏:0      [点我收藏+]

标签:mysql

测试环境:服务端和客户端均为win7,MySql数据库、表字符集为utf-8,字段字符集与表一致。

1、使用mysql命令进行操作时的乱码问题解决。

(1)设置当前字符集

set names gbk 

(2)修改单个字符集参数

使用命令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     | latin1                                 |
| character_set_system     | utf8                                   |
| character_sets_dir       | D:\mysql-5.6.25-winx64\share\charsets\ |
+--------------------------+----------------------------------------+

修改单个字符集:

set character_set_results=gbk

注意:该方法设置的参数在服务器重启后失效。

2、mysqldump导出时乱码问题解决

(1)导出有两种情况:一是导出表结构,二是导出表结构和数据。

导出全表:

mysqldump -uroot -p [databasename] --table [tablename]

只导出表结构:

mysqldump -uroot -p [databasename] --table [tablename] -d

(2)实验

经测试,在控制台环境,导出表结构时,无论怎么设置--default-character-set参数,均无法正常显示字段注释中的中文,命令如下:

mysqldump -uroot -p --default-character-set=gbk test --table t_data

但表数据中的中文可以正常显示(通过设置--default-character-set=gbk)。

但是,若导出为文件,则可以正常显示,命令示例如下:

mysqldump -uroot -p --default-character-set=gbk mydb --table t_data -d > t_data.sql

有趣的是,不管--default-character-set设置为何值(gbk,utf8,latin1)均能正常显示,在控制台显示乱码和控制台本身有一定的关系。

(3)总结

在控制台环境,表结构中的中文字段注释总是不能正常显示,使用管道输出到文件,则总能正常显示(使用UltraEdit打开)。

表数据中必须通过参数设置--default-character-set=gbk来控制正常输出中文,包括控制台显示或用管道输出到文件。

也就是说--default-character-set=gbk 仅对表数据的编码处理生效,对表结构字段注释中的中文无效。


参考:

1、查看创建表使用的字符集:

show create table [tableName] 

2、查看表字段使用的字符集:

show full columns from [tableName]

3、查看表

show tables;

4、查看表信息

desc [tablename]

5、查看数据库

show databases;

6、查看数据库信息

show create database test;



版权声明:本文为博主原创文章,未经博主允许不得转载。

MySQL 中文乱码解决

标签:mysql

原文地址:http://blog.csdn.net/hongweigg/article/details/46914221

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!