1、MySql数据库安装时默认编码是Latin1,要支持中午需要在安装时设置数据库编码为gbk或utf-8。
2、在创建数据库时也需要设置数据库编码和上述数据库的编码格式为gbk或utf-8。
3、出现数据库乱码时可以安装以下方式来解决:
首先产看数据库字符集
show variables like 'character%';
上述表中:
1、charater_set_client:客户端连接使用编码; 此处编码可以通过客户端连接串来指定: jdbc:mysql://localhost:3306/test? useUnicode=true&characterEncoding=gbk;也可以通过后面配置文件指定;或者命令方式指定;
2、character_set_connection:数据库连接使用的编码; 3、 character_set_database:数据库编码(表,列),该编码在安装数据库时可指定或命令指定;
4、character_set_results:结果集(客户端显示)的编码;
5、character_set_server:数据库服务器的编码,该编码可以通过后面配置文件指定或命令指定。
MySql处理连接时,外部连接发送过来的SQL请求会根据以下顺序进行转换:character_set_client ->character_set_connection ->character_set_database ->character_set_results
产生乱码的根本原因在于:
1.客户端(character_set_client)没有正确地设置client字符集,导致原先的SQL语句被转换成connection所指字符集,而这种转换,是会丢失信息的,如果client是utf8格式,那么如果转换成gb2312格式,这其中必定会丢失信息,反之则不会丢失。一定要保证connection的字符集大于client字符集才能保证转换不丢失信息。
2. 数据库字体没有设置正确,如果数据库字体设置不正确,那么connection字符集转换成database字符集照样丢失编码,原因跟上面一样。
1.客户端(character_set_client)没有正确地设置client字符集,导致原先的SQL语句被转换成connection所指字符集,而这种转换,是会丢失信息的,如果client是utf8格式,那么如果转换成gb2312格式,这其中必定会丢失信息,反之则不会丢失。一定要保证connection的字符集大于client字符集才能保证转换不丢失信息。
2. 数据库字体没有设置正确,如果数据库字体设置不正确,那么connection字符集转换成database字符集照样丢失编码,原因跟上面一样。
方式一:安装指定数据库编码+修改配置文件
1、在安装数据库时选择某一编码gbk/utf-8,相当设定character_set_database编码
2、在my.ini中也可以修改
CLIENT SECTION # ---------------------------------------------------------------------- # The following options will be read by MySQL client applications. # Note that only client applications shipped by MySQL are guaranteed # to read this section. If you want your own MySQL client program to # honor these values, you need to specify it as an option during the # MySQL client library initialization. # [client] port=3306 [mysql] default-character-set=gbk
# SERVER SECTION # ---------------------------------------------------------------------- # # The following options will be read by the MySQL Server. Make sure that # you have installed the server correctly (see above) so it reads this # file. # [mysqld] # The TCP/IP Port the MySQL Server will listen on port=3306 #Path to installation directory. All paths are usually resolved relative to this. basedir="C:/Program Files/MySQL/MySQL Server 5.5/" #Path to the database root datadir="C:/ProgramData/MySQL/MySQL Server 5.5/Data/" # The default character set that will be used when a new schema or table is # created and no character set is defined character-set-server=latin1此处修改server端字符编码
方式二:通过命令行来修改
set character_set_client=gbk; commit; set character_set_connection=gbk; commit; set character_set_database=gbk; commit; set character_set_results=gbk; commit; set character_set_server=gbk; commit; set character_set_filesystem=gbk; commit; set collation_connection=gbk_general_ci; commit; set collation_database=gbk_general_ci; commit; set collation_server=gbk_general_ci; commit;
同样的可以采用如下命令来查看数据库的编码:
相关推荐
MySQL数据库系统中文乱码问题及解决方案.pdf
解决Mysql5.0数据库中文乱码解决方案 万能方法
MySQL乱码解决方案数据库乱码MySQL乱码解决方案数据库乱码
linux运维学习笔记:MySQL数据库中文乱码原理及解决乱码方案
MySql中文乱码问题 Mysql建库建表 Mysql建库建表中文乱码问题 Mysql中文乱码问题解决方案
主要时解决navicat连接MYSQL时造成的乱码问题,文档详述描写了怎么查找乱码原因和解决方案,主要是解决MySQL5.5的问题,针对不同的乱码问题,提供简单解决方法。
mysql出了乱码可查,方便快捷,好用。jsp开发的过程中遇到的数据库端乱码解决办法都在这里了,跑不出去
解决mysql乱码问题。主要是数据库查询出数据中文为问号???的问题。
罗集比较全的数据库乱码问题的解决方案,,讲明了原因和解决方法
sqlite数据库存取中文乱码的全部解决方案(包括其它数据库oracle+sqlserver+mysql) 数据库的连接方式、数据库里存放数据的字体编码、所选编程语言的缺省字体编码。如果在编程中遇到不能正确显示中文时、、、、
快速进行Access数据库转成mysql数据库及mysql导入中文数据乱码问题的解决方案.pdf
主要介绍了Mac Mysql数据库中文乱码问题解决的相关资料,需要的朋友可以参考下
快速进行Access数据库转成mysql数据库及mysql导入中文数据乱码问题的解决方案资料.pdf
快速进行Access数据库转成mysql数据库及mysql导入中文数据乱码问题的解决方案借鉴.pdf