首页 > 数据库 >mybatis - 连接mysql数据库插入中文乱码

mybatis - 连接mysql数据库插入中文乱码

时间:2023-02-22 12:09:11浏览次数:42  
标签:中文 UTF 数据库 乱码 mysql mybatis 解码


对于mysql数据库的乱码问题,有两中情况:

1. mysql数据库编码问题(建库时设定)。
2. 连接mysql数据库的url编码设置问题。

对于第一个问题:
目前个人发现只能通过重新建库解决,建库的时候,选择UTF-8字符集。我试过修改现有数据库字符集为UFT
-8,但是根本不起作用,插入的中文仍然乱码(中文显示成:???)。重建库时选择字符集为UTF-8之后,中文正常显示了。

对于第二个问题,是这样的情况

我建库时设置了数据库默认字符集为UTF-8,通过mysql workbench直接插入中文显示完全正常。但是使用mybaits插入数据时,中文显示成了”???”这样的乱码。但从数据库获取的中文不会乱码。跟踪数据库操作,SQL语句中的中文还是显示正常的,但是插入到mysql数据库后就乱码了,于是判断可能是数据库连接的问题。后来在网上找了下资料,发现确实可以为mysql数据库的连接字符串设置编码方式,如下:

jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf8

添加 useUnicode=true&characterEncoding=utf8 参数之后,插入中文就正常了。

添加的作用是:
指定字符的编码、解码格式。

例如:
假设mysql数据库用的是GBK编码(也可能是其它,例如Ubuntu下就是latin1),而项目数据库用的是utf-8编码。这时候如果添加了useUnicode=true&characterEncoding=UTF-8 ,那么作用有如下两个方面:

1. 存数据时:

数据库在存放项目数据的时候会先用UTF-8格式将数据解码成字节码,然后再将解码后的字节码重新使用GBK编码存放到数据库中。

2.取数据时:
在从数据库中取数据的时候,数据库会先将数据库中的数据按GBK格式解码成字节码,然后再将解码后的字节码重新按UTF-8格式编码数据,最后再将数据返回给客户端。


标签:中文,UTF,数据库,乱码,mysql,mybatis,解码
From: https://blog.51cto.com/u_15976424/6078820

相关文章

  • Mysql - Mysql设置字符编码和修改字符编码(数据库,表,字段)
    MySQL的字符集支持(CharacterSetSupport)有两个方面:字符集(Characterset)和排序方式(Collation)。对于字符集的支持细化到四个层次:服务器(server),数据库(database),数......
  • mybatis批量插入大量数据
    Mybatis内置的ExecutorType有3种,SIMPLE、REUSE、BATCH;默认的是simple,该模式下它为每个语句的执行创建一个新的预处理语句,单条提交sql;而batch模式重复使用已经预处理的语......
  • Mybatis中xml文件书写sql注意项
      1、namespace的值要与mapper接口绑定。2、select标签中的id要与mapper接口中的方法名绑定。3、模糊查询时注意%的位置;且不用像SQL里一样加双引号;SQL末尾不要加分......
  • mysql delete删除记录数据库空间不减少问题 2 种解决方法(转)
    转自:详解mysqldelete删除记录数据库空间不减少问题三种解决方法1、使用OPTIMIZE命令optimizetableact_demo_test;注意:在OPTIMIZETABLE运行过程中,MySQL会锁定表。......
  • Mysql关联删除CSV中的相关数据
    问题描述:提供一个csv文件,记录的是一些不同数据库的不同表中的共同字段account_id数据,需要在A库的account表中做关联删除 解决思路:csv文件中储存的都是account_id,六位纯......
  • MySQL查询(一)
    MySQL查询(一)1.基础查询SELECT查询列表FROM表名;查询列表:可以是表中的字段、常量值、表达式、函数查询结果是一个虚拟的表格,并没有保存下来查询表中的......
  • pymysql通过DBUtils实现连接池技术
    DBUtils是一套Python数据库连接池包,并允许对非线程安全的数据库接口进行线程安全包装。一、安装pipinstallDBUtils二、导入模块#针对不同版本,可能导入方式存......
  • MySQL8.0 0 安装后,使用CMD无法启动mysql服务
    首先,先把mysql的bin路径添加到系统环境变量     第一步:在MySQL的安装文件的bin目录   例如: D:\mysql\bin   中新建一个my.ini的文件,复制进代码[my......
  • ssm学习笔记23001-mybatis接入和数据库连接实现一个插入数据的操作
    mybatis:是什么,用来干嘛的,同类竞品中有何种优势?mybatis在idea中的引入:1、创建一个空工程2、创建一个空的maven文件:会自动生成一个pox文件,打包类型配置为jar,添加mybat......
  • mysql之半同步
    ##################安装半同步插件:mysql>installpluginrpl_semi_sync_mastersoname'semisync_master.so';mysql>installpluginrpl_semi_sync_slavesoname'semi......