再谈 mysql中文乱码
来源:互联网 发布:网络推手平台 编辑:程序博客网 时间:2024/04/30 04:39
上一篇,转载的mysql中文乱码问题,给了我们很多解决中文乱码的提示,步骤。
可是按照上述配置,一直都没有解决我的程序中往数据库中插入中文乱码的问题。
然后我又继续搜索,摸索,提问,终于,不再有乱码了。现在,我自己来总结一下中文乱码问题。
说明:我使用的是windows 64位操作系统+visual studio 2010 + mysql5.5 + OTL
出现乱码,首先,我们的查看mysql数据库的客户端,服务端,连接层,数据库,表,字段的编码格式。
使用show variables like 'char%',查看客户端,服务端,连接层等的编码。
mysql> show variables like 'char%';
+--------------------------+---------
-----------+
| Variable_name | Value
|
+--------------------------+---------
-----------+
| character_set_client | gbk
|
| character_set_connection | gbk
|
| character_set_database | utf8
|
| character_set_filesystem | binary
|
| character_set_results | gbk //这个是结果集的显示
|
| character_set_server | utf8
|
| character_set_system | utf8
还查看一下collation的字符集:
show varibles like 'coll%'
+----------------------+-----------------+
| Variable_name | Value |
+----------------------+-----------------+
| collation_connection | gbk_chinese_ci |
| collation_database | utf8_general_ci |
| collation_server | utf8_general_ci |
+----------------------+-----------------+
查看数据表所指定的字符集:
show create table 表名;
| student | CREATE TABLE `student` (
`no` int(11) DEFAULT NULL,
`name` varchar(20) DEFAULT NULL,
`sex` varchar(2) DEFAULT NULL,
`age` int(11) DEFAULT NULL,
UNIQUE KEY `no_UNIQUE` (`no`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
查看字段的字符集:
show full columns from 表名
| no | int(11) | NULL | YES | UNI | NULL | | select,
insert,update,references | |
| name | varchar(20) | utf8_general_ci | YES | | NULL | | select,
insert,update,references | |
| sex | varchar(2) | utf8_general_ci | YES | | NULL | | select,
insert,update,references | |
| age | int(11) | NULL | YES | | NULL | | select,
insert,update,references | |
从网上查了许多,保证所有的字符集编码一致就不会有乱码。然后我就真的把所有的编码都设置成一样了。在连接的时候也指定了utf8编码。
可是依旧乱码。我都快疯了。我甚至用了转码。可能是使用的操作系统和mysql不同的缘故。一直都觉得utf8挺强大的,什么都能支持。
乱码呀乱码,于是我尝试着换其他编码,尝试着设置不同的编码。终于不再编码了。
我的配置就向上面你们所看到的,并不是每种的编码都一致的。开始我的配置全是utf8编码。
后面我使用命令修改了客户端以及连接层的字符集编码 set names gbk.把如下三个都改成gbk。
character_set_client
character_set_connection
character_set_results
相当 set character_set_client gbk
set character_set_connection gbk
set character_set_results gbk
在指定连接的时候,也指定为gbk。
char *constr = "Driver={MYSQL ODBC 5.1 Driver};Server=localhost; Database=testdb;Uid=root;Pwd=123qwe!;CharSet=gbk";
如果你是使用ODBC配置,则记得ODBC配置时,点击detail,里面的第二个选项卡指定字符集为gbk。
这样 ,你再在你的程序中往mysql中插入中文,不会再有乱码了,O(∩_∩)O哈哈~
其实这里的配置和操作系统是有关系的。所以大家配置的时候不要全部按照网上的来。还需根据自己的操作系统,环境做些许的变化。
知道上面的那些字符集,查看修改命令,再根据自己的需求设定。
还提供一些供大家参考的消息:
客户端,服务端的字符集编码都是在my.ini文件中配置的
[mysql]
default-character-set=gbk
[mysqld]
这个下面有
character-set-server=utf8
修改字段的字符集
alter table student modify name varchar(20) character set utf8;
- 再谈mysql中文乱码
- 再谈 mysql中文乱码
- MYSQL中文乱码解决方案
- MYSQL中文乱码
- MySQL中文字符乱码
- mysql中文乱码解决
- 解决MySQL中文乱码
- mysql中文乱码解决方案
- mysql 中文乱码问题
- MySql 中文乱码问题,:
- mysql中文乱码终结
- MYSQL数据中文乱码
- Mysql中文乱码
- mysql中文乱码
- mysql中文乱码解决方法
- mysql 中文乱码。
- mysql中文乱码
- MySQL中文乱码
- 远程手术操作 医疗免去繁琐
- 各种聚类算法的比较
- 子窗口操作父窗口
- linux内核中读写文件
- linux命令行(十二)
- 再谈 mysql中文乱码
- 树
- Js获取当前日期时间及其它操作
- Linux内核中读写文件数据的方法
- Android OpenGL es 纹理坐标设定与贴图规则
- POJ2586 Y2K Accounting Bug
- NSURL 处理的基本函数
- 昨天往参加adobe AIR发布会
- C语言 类型声明