Mysql错误问题记录
① 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……有人知道这是为什么吗?
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了