数据库连接URL 后面加上 这个
&characterEncoding=UTF-8
数据库编码,项目编码都整好,啥都不用加就没问题了,你这估计用navicat这些客户端去查看表数据,应该就是乱码的
在 Mybatis 中输出中文乱码的问题,可能是因为以下原因导致的:
数据库连接字符集设置不正确:你需要在数据库连接 URL 中设置 useUnicode=true&characterEncoding=utf-8
,例如:
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/mydatabase?useUnicode=true&characterEncoding=utf-8"/>
<property name="username" value="root"/>
<property name="password" value="password"/>
</dataSource>
数据库表字符集设置不正确:你需要在创建数据库表时设置表的字符集为 utf8
,例如:
CREATE TABLE `mytable` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(50) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Mybatis 配置文件字符集设置不正确:你需要在 Mybatis 配置文件中设置字符集为 UTF-8
,例如:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<properties>
<property name="jdbc.driver" value="com.mysql.jdbc.Driver"/>
<property name="jdbc.url" value="jdbc:mysql://localhost:3306/mydatabase?useUnicode=true&characterEncoding=utf-8"/>
<property name="jdbc.username" value="root"/>
<property name="jdbc.password" value="password"/>
</properties>
<typeAliases>
<typeAlias type="com.example.model.User" alias="User"/>
</typeAliases>
<mappers>
<mapper resource="com/example/mapper/UserMapper.xml"/>
</mappers>
</configuration>
IDE 编辑器字符集设置不正确:你需要在 IDE 编辑器中设置字符集为 UTF-8
,例如:
File
-> Settings
-> Editor
-> Code Style
-> File Encodings
,将 Global Encoding
和 Project Encoding
设置为 UTF-8
。如果以上步骤都正确配置了,但仍然出现乱码问题,你可以尝试在输出中文之前,先将要输出的字符串使用 new String(str.getBytes("ISO-8859-1"), "UTF-8")
进行编码转换,将编码从 ISO-8859-1 转换成 UTF-8。例如:
String name = "张三";
name = new String(name.getBytes("ISO-8859-1"), "UTF-8");
System.out.println(name); // 输出:张三
希望以上解决方案能够帮助你解决输出中文乱码的问题。
麻烦点一下采纳