Mysql错误问题记录

① Incorrect string value: 'xE6x94xBExE5xA4xA7...' for column 'name' at row 1 Query……

原因:编码不匹配。数据库是latin1编码,而插入的中文字符串是utf-8编码。

解决思路:

一、修改数据库的编码。

这个解决办法一劳永逸,省去大量的编码转换工作。需要配置数据库配置参数如下:

打开数据库配置文件my.ini(Windows)或者/etc/my.cnf(Linux)。

修改或者增加如下参数:

在 [mysql]  标签下加上一行

default_character_set = utf8

在 [mysqld] 标签下加上三行

default_character_set = utf8

character_set_server = utf8

collation_server = utf8_general_ci

init_connect = 'SET collation_connection = utf8_general_ci'

init_connect = 'SET NAMES utf8' 

在 [mysql_server]标签下加上一行

default_character_set = utf8

在 [mysqld_safe]标签下加上一行

default_character_set = utf8

在 [client]标签下加上一行

default_character_set = utf8

二、转换插入的中文字符编码。

假设插入中文字符串srcStr,需要转换成如下字符串:

String insertStr = new String(srcStr.getBytes("utf-8"),"iso-8859-1");

这种思路在取出字符串时需要再转换一次编码,所以推荐第一种解决办法。

PS:其实转换的时候遇到另外一个问题,就是HttpServletRequest打印出来的编码格式是utf-8,实际转换编码的时候用的是gb2312……有人知道这是为什么吗?

原文地址:https://www.cnblogs.com/yoyotl/p/5180260.html