(1)
当使用mysql数据库时,要确定五个编码。(1)首先我们要设置数据库的编码;(2)然后确定程序中的请求和响应的编码和数据库一致;(3)连接数据库的编码和数据库一致,jdbc:mysql://127.0.0.1:3306/数据库名?useUnicode=true&characterEncoding=utf-8(注意这句话一定不要写错了)(4)页面编码和数据库一致。(5)程序文件编码和数据库一致。
(2)
当以上五中都相同但还是出现插入乱码或查询乱码。你就应该考虑到mysql服务器的编码。mysql默认编码为latin1不支持中文,可以通过show variables like 'character%';查看。需要将以下几个参数的编码设为一致。本人乱码是因为character_set_server 为latin1。而其他几个编码为utf-8.在linux下可以修改my.cnf文件,默认在/etc/my.cnf,在[mysqld]后添加character-set-server = utf8 。
MySQL的默认编码是Latin1,不支持中文,要支持中午需要把数据库的默认编码修改为gbk或者utf8。
1、需要以root用户身份登陆才可以查看数据库编码方式(以root用户身份登陆的命令为:>mysql -uroot –p,之后两次输入root用户的密码),查看数据库的编码方式命令为: >show variables like 'character%'; +--------------------------+----------------------------+ | Variable_name | Value | +--------------------------+----------------------------+ | character_set_client | latin1 | | character_set_connection | latin1 | | character_set_database | latin1 | | character_set_filesystem | binary | | character_set_results | latin1 | | character_set_server | latin1 | | character_set_system | utf8 | | character_sets_dir | /usr/share/mysql/charsets/ | +--------------------------+----------------------------+ 从以上信息可知数据库的编码为latin1,需要修改为gbk或者是utf8; 其中,character_set_client为客户端编码方式; character_set_connection为建立连接使用的编码; character_set_database数据库的编码; character_set_results结果集的编码; character_set_server数据库服务器的编码; character_set_system linux可以通过 修改my.conf windows修改my.ini 在[mysqld]后面加上: character_set_server=utf8后面的几个语句和这个相似,本处略去。 注意 :如果插入字符包含Emoji表情,则必须在my.conf中添加如下两行(只加入以下两行,其他地方不需要改,当然要保证创建数据库和表编码为utf8mb4) collation_server = utf8mb4_general_ci character_set_server = utf8mb4 不然会报java.sql.SQLException: Incorrect string value: '\xE6\x88\x91\xE7\x9A\x84...' for column 因为Emoji表情是四个字符,而utf-8是三个字符。所以要改成utf8mb4. 也可以通过命令方式 set character_set_server=utf8 注意是utf8 不是utf-8,后面的几个语句和这个相似,本处略去。 只要保证以上6个采用的编码方式一样,就不会出现乱码问题,如下图。 另一个查看数据库编码的命令: >show variables like ‘collation%’; 相关资源:mysql编码问题