MYSQL中文乱码以及character_set_database属性修改

1.数据库设置

  新安装MYSQL,还没有修改数据库系统编码。

  之后由于创建数据库时候:create database db_name; 没有指定编码,

  之后发现乱码就修改各个属性之后还是乱码,便开始配置数据库属性,之后信息如下:

  +--------------------------+----------------------------+
  | character_set_client | utf8 |
  | character_set_connection | utf8 |
  | character_set_database | latin1                       |
  | character_set_filesystem | binary |
  | character_set_results | utf8 |
  | character_set_server | utf8 |
  | character_set_system | utf8 |
   | character_sets_dir | /usr/share/mysql/charsets/ |
  +--------------------------+----------------------------+

  发现character_set_database该属性设置utf8之后依旧还是Latin1 ,其实这个属性是数据库属性,

  在创建数据库时候如果不指定默认就是这个,因此对于创建的数据库可以修改数据库编码为utf8,修改脚本:

  alter database <数据库名> character set utf8; 

  之后还是乱码,由于之前数据错误编码,所以设置utf8依旧乱码,删除数据重新导入即可。

  因此为了避免此问题,以后安装数据库首要任务就是配置编码,创建数据库时候指定编码:

  CREATE DATABASE `mydb` CHARACTER SET utf8 COLLATE utf8_general_ci;

 

 

2.数据库连接设置

   jdbc:mysql://localhost:3306/test?characterEncoding=utf8

   问题:

      characterEncoding=utf8的意思是项目中的编码还是要转换成的mysql的编码?

 

     比如项目(idea)是utf-8,mysql数据库test也是utf-8,这句话还有必要吗?

 

     如果项目是(idea)gbk,mysql数据库test是utf-8,那么数据库连接写

 

     characterEncoding=utf8 还是 characterEncoding=gbk呢?

 

   回答:characterEncoding=utf8 告诉数据库此次连接传输UTF8数据,

              项目为UTF8 数据库为其他编码,在持久化时会把项目UTF8的

             数据转换为数据库存储的格式;从数据库取数据同理。

              项目和数据库都为UTF8的话,可以不写

 

参考: https://blog.csdn.net/huanbia/article/details/80208466

           https://www.cnblogs.com/leodaxin/p/10566362.html

           https://www.oschina.net/question/2843307_2286814

posted @ 2020-09-14 00:47  小窝蜗  阅读(852)  评论(0)    收藏  举报