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;
同样的可以采用如下命令来查看数据库的编码:
扫描二维码关注公众号,回复:
1216632 查看本文章