① Incorrect string value: '\xE6\x94\xBE\xE5\xA4\xA7...' 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……有人知道这是为什么吗?
标签:编码,set,错误,记录,default,utf8,character,标签,Mysql From: https://www.cnblogs.com/kn-zheng/p/17025206.html