Mysql错误问题记录
2016-02-03 17:51
603 查看
① 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,需要转换成如下字符串:
这种思路在取出字符串时需要再转换一次编码,所以推荐第一种解决办法。
PS:其实转换的时候遇到另外一个问题,就是HttpServletRequest打印出来的编码格式是utf-8,实际转换编码的时候用的是gb2312……有人知道这是为什么吗?
原因:编码不匹配。数据库是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……有人知道这是为什么吗?
相关文章推荐
- 生产库MySQL配置文件my.cnf详解
- 企业高并发的解决方案之mysql分库主从切换
- mysql delete数据时报Error Code 1175
- win7 安装mysql 5.7.9记录
- MySQL 5.7.9 ZIP 免安装版的配置
- 关于MySQL+jsp+servlets实例----jstl标签中boolean值的获取问题
- HIVE与mysql
- How to change data dir of mysql?
- 数据库之mac上mysql root密码忘记或权限错误的解决办法
- 数据库之Mac下Mysql命令全集
- MySQL如何关联查询
- MYSQL数据库管理之权限管理
- Mysql找回管理员password
- mysql常用命令
- mysql操作
- MYsql 相关问题
- 设置mysql远程连接root权限
- mysql or查询优化
- MYSQL获取自增ID的四种方法
- MySQL 中隔离级别 RC 与 RR 的区别