MySQL 中文显示乱码
2015-06-07 01:03
537 查看
MySQL中默认字符集的设置有四级:服务器级,数据库级,表级 。最终是字段级 的字符集设置。注意前三种均为默认设置,并不代码你的字段最终会使用这个字符集设置。所以我们建议要用show create table table ; 或show full fields from tableName; 来检查当前表中字段的字符集设置。
MySQL中关于连接环境的字符集设置有 Client端,connection, results 通过这些参数,MySQL就知道你的客户端工具用的是什么字符集,结果集应该是什么字符集。这样MySQL就会做必要的翻译,一旦这些参数有误,自然会导致字符串在转输过程中的转换错误。基本上99%的乱码由些造成。
乱码后需要检查的信息。(如果需要论坛上的朋友帮助,建议你提供以下信息 )
1. 数据库表中字段的字符集设置 。show create table TableName 或 show full columns from tableName
mysql> show create table t1;
+-------+------------------------------------
| Table | Create Table
+-------+------------------------------------
| t1 | CREATE TABLE `t1` (
`id` int(11) NOT NULL,
`c1` varchar(30) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=gbk |
+-------+------------------------------------
1 row in set (0.00 sec)
mysql> show full columns from t1;
+-------+-------------+----------------+------+-----+-
| Field | Type | Collation | Null | Key |
+-------+-------------+----------------+------+-----+-
| id | int(11) | NULL | NO | PRI |
| c1 | varchar(30) | gbk_chinese_ci | YES | |
+-------+-------------+----------------+------+-----+-
2 rows in set (0.00 sec)
mysql>
2. 当前联接系统参数 show variables like 'char%'
mysql> show variables like 'char%';
+--------------------------+----------------
| Variable_name | Value
+--------------------------+----------------
| character_set_client | gbk
| character_set_connection | gbk
| character_set_database | latin1
| character_set_filesystem | binary
| character_set_results | gbk
| character_set_server | latin1
| character_set_system | utf8
| character_sets_dir | C:/Program File
+--------------------------+----------------
8 rows in set (0.00 sec)
mysql>
1. 中文,请确保 表中该字段的字符集为中文兼容:
big5 | Big5 Traditional Chinese
gb2312 | GB2312 Simplified Chinese
gbk | GBK Simplified Chinese
utf8 | UTF-8 Unicode
假如我们要想设定的字符集是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
对于jdbc插入mysql的字段:
插入成功,但是打开mysql显示乱码,不要想着改正mysql数据库的显示,要想着继续通过jdbc读取这些数据,如果能通过System.out打印出来正确,这也是一种正确方法!!!!!!!!1111
相关文章推荐
- mysql数据库权限
- MySQL 中文乱码(全)
- mysql数据库按照同一字段不同值进行排序
- mysql 用户角色权限表建立
- 将MySQL转换为MMSQLServer2008实例过程
- MySql备份策略规划需要考虑的问题
- mysql常用命令总结
- 查看MYSQL数据库中所有用户及拥有权限
- mysql修改密码
- mysql 一张表update另一张表
- mysql旧表去重数据导入新表且赋予主键id新值
- ajax+jsp+servlet+mysql实现登陆验证
- MySQL Replication的Reset slave重置命令
- mysql在windows下两种安装方法
- MySQL索引原理及慢查询优化
- Mysql中的排序规则utf8_unicode_ci、utf8_general_ci的区别总结
- 第17章 Mysql复制
- mysql
- mysql无法添加外键约束(cannot add foreign key constraint)
- mysql int(10)的含义