MySql数据库中文乱码解决方案

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、在安装数据库时选择某一编码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;
同样的可以采用如下命令来查看数据库的编码:

 
 
 
 

 

 

猜你喜欢

转载自lovezehui.iteye.com/blog/2059514