我爱编程

JDBC插入/查询MySQL中文乱码

2018-04-09  本文已影响43人  biloba

产生乱码的原因是编码方式不相同或者不兼容。关于字符编码不是太清楚可以看一下这篇文章http://blog.jobbole.com/76376/

问题

使用JDBC查询得到数据里中文乱码

插入时中文也变成???

解决方法

将编码方式统一为utf-8

  1. eclipse文件保存的编码方式
    eclipse->window->preferences->General->workspaceTypes->Other->UTF-8->OK
  1. 数据库的编码方式
    通过 show variables like '%char%'; 查看数据库编码

这里latin1在查询/插入时会造成中文乱码,应把它改成utf-8,不过改成utf-8时插入会出现下面问题

ERROR 1366 (HY000): Incorrect string value: '\xB1\xEA\xCC\xE2\xD5\xE2...' for column 'title' at row 2

所以这里改成gbk,jdbc连接时数据能转换成utf-8
打开MySQL的配置程序

在这里把默认字符编码改成gbk

配置完成后再看

  1. jdbc连接的编码方式
    在url后加上 ?useUnicode=true&characterEncoding=utf-8
public static final String DB_URL="jdbc:mysql://localhost:3306/dbname?useUnicode=true&characterEncoding=utf-8";

通过上面三步问题应该就能得到解决,不过之前已存在的编码不相同的数据仍然是乱码,之后的数据是正常的

上一篇下一篇

猜你喜欢

热点阅读