关于mysql数据库乱码问题

来源:互联网 发布:win32编程 u盘 编辑:程序博客网 时间:2024/05/01 00:30

//当我第一次接触mysql,首先让我难受的是mysql的乱码问题,百度上也有许多有关的解决方案,不过作为亲身受害者,我想很有必要贴出我的心声:

1.关于mysql的字符集处理

mysql在标识数据时采取二进制字符和非二进制字符格式,前者主要用来标识图片,声音,后者就完成剩余的所有功能,而对于后者,就存在字符集设置问题。

我们知道数据库是老外搞出来的,他们在设计的时候并没有考虑到编码格式的问题,在计算机流行的现代每个国家为了支持本国的语言,都推出了自己本国的编码格式,下面利用mysql命令列出世界上所有的编码:

 

其中的GBK、gb2312、big5是中国的编码

GBK:支持21000多个汉字,包括简体和繁体,占2个字节

gb2312:支持6700多个汉字,占2个字节

big5:支持繁体字符集,主要是支持香港、台湾那边的字符,繁体,13000多汉字,2个字节

国际标准化组织为了统一格式,创建了UTF8编码,也就是unicode编码的一种格式,称为万国码,支持世界上的所有语言,

 

具体解决方案:

方案:

首先利用命令行,查看字符集:

 

解释下乱码原理:

当我们链接mysql数据库时,实际上要经过下面几个步骤:

客户端->链接端->数据库字段端->返回端

就是上面的贴图中的

character_set_client

character_set_connection

character_set_database

character_set_result

乱码问题出现这几个步骤中,只要其中某个步骤出错,就会出现乱码

当我们用程序在外部链接mysql 数据库时,客户端就是我们的程序软件,所以要将客户端设置成GBK或者gb2312,

链接时设置为UTF8或者GBK

数据库设置为gbk或utf8

返回设置成GBK

这样一般就不会出现中文乱码了

如下图所示:

你可以通过命令行设置:

如果不考虑注入问题,你可以采取以下方法:set  names gbk ;

这条命令设置了客户端、连接端、返回端均为GBK;

 

你也可以逐个设置:

在创建库的时候设置字符集:

利用命令: create database mydatabase default character set utf8;

在创建表的时候指定表的字符集:

利用命令:

create table user(name char(30) character set gbk) default character set gbk;

  还有如下设置:

 设置结果集:
set character_set_results=gbk;
设置连接字符集:
set character_set_connection=gbk;

//因为我们现在是学习阶段,不考虑内存容量问题,统一设置为UTF8,如果你的程序只支持汉语,你的作品向外发行最好选择GBK编码。。。。。

如果你按照上面的方法做还是发现程序运行有问题,请检查您的程序是否也是UNICODE编码,我以前就是因为这个原因。

 

原创粉丝点击