现在插入记录时报Incorrect string value(错误的字符串值);
截了图,求帮忙是哪里错了......
mysql> show variables like "%colla%";
+----------------------+-----------------+
| Variable_name | Value |
+----------------------+-----------------+
| collation_connection | utf8_general_ci |
| collation_database | utf8_general_ci |
| collation_server | utf8_general_ci |
+----------------------+-----------------+
3 rows in set (0.00 sec)
mysql> show variables like "%char%";
+--------------------------+----------------------------------------------------
-----+
| Variable_name | Value
|
+--------------------------+----------------------------------------------------
-----+
| character_set_client | utf8
|
| character_set_connection | utf8
|
| character_set_database | utf8
|
| character_set_filesystem | binary
|
| character_set_results | utf8
|
| character_set_server | utf8
|
| character_set_system | utf8
|
| character_sets_dir | C:\Program Files\MySQL\MySQL Server 5.5\share\chars
ets\ |
+--------------------------+----------------------------------------------------
-----+
8 rows in set (0.00 sec)
16 个解决方案
#1
jsp 页面中有三个地方设置编码,你都设置成了UTF-8吗?
<%@ page language="java" contentType="text/html; charset=utf-8"
import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<%-- <%@ taglib uri="/struts-dojo-tags" prefix="sx"%> --%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<sx:head locale="zh_CN" parseContent="true" extraLocales="zh" />
<base href="<%=basePath%>">
<title>My JSP 'addGoods.jsp' starting page</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
(下面的省略)
<%@ page language="java" contentType="text/html; charset=utf-8"
import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<%-- <%@ taglib uri="/struts-dojo-tags" prefix="sx"%> --%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<sx:head locale="zh_CN" parseContent="true" extraLocales="zh" />
<base href="<%=basePath%>">
<title>My JSP 'addGoods.jsp' starting page</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
(下面的省略)
#2
设置上了!结果还是一样啊。
#3
你确认是中文乱码造成的?不是字段类型的错误?
#4
User类中name属性设置的是String类型啊! 数据库中用的是varchar类型,结果查数据的时候
ERROR 1366 (HY000): Incorrect string value: '\xC9\xCF\xC8\xFD' for column 'name'
字段类型应该不会错啊!
ERROR 1366 (HY000): Incorrect string value: '\xC9\xCF\xC8\xFD' for column 'name'
字段类型应该不会错啊!
#5
你的sql语句呢??是不是其他的问题,跟字符集无关。。。
#6
你这乱码奇怪。
有没有异常信息?如果有把异常信息贴出来看看。另外,你这个是jsp跳jsp出现乱码,还是servlet跳jsp出现乱码?还是其它情况?
#7
这个用的是Hibernate框架对数据库进行操作的
语句都打印出来了
Hibernate:
insert
into
student.user
(name, password, age, sex, province, city)
values
(?, ?, ?, ?, ?, ?)
语句都打印出来了
Hibernate:
insert
into
student.user
(name, password, age, sex, province, city)
values
(?, ?, ?, ?, ?, ?)
#8
HTTP Status 500 - Hibernate operation: could not insert: [entity.User]; uncategorized SQLException for SQL [insert into student.user (name, password, age, sex, province, city) values (?, ?, ?, ?, ?, ?)]; SQL state [HY000]; error code [1366]; Incorrect string value: '\xE5\xBC\xA0\xE4\xB8\x89' for column 'name' at row 1; nested exception is java.sql.SQLException: Incorrect string value: '\xE5\xBC\xA0\xE4\xB8\x89' for column 'name' at row 1
表单提交后,交给一个action处理 ,result给了一个Jsp页面。
#9
User类中name属性设置的是String类型啊! 数据库中用的是varchar类型,结果查数据的时候
ERROR 1366 (HY000): Incorrect string value: '\xC9\xCF\xC8\xFD' for column 'name'
字段类型应该不会错啊!
#10
你本来的name值就是\xC9\xCF\xC8\xFD?还是转码的?
这个可能超长了啊。。。
这个可能超长了啊。。。
#11
service业务逻辑层调用userDao中的save()方式开始出问题了
exception
org.springframework.jdbc.UncategorizedSQLException: Hibernate operation: could not insert: [entity.User]; uncategorized SQLException for SQL [insert into student.user (name, password, age, sex, province, city) values (?, ?, ?, ?, ?, ?)]; SQL state [HY000]; error code [1366]; Incorrect string value: '\xE5\xBC\xA0\xE4\xB8\x89' for column 'name' at row 1; nested exception is java.sql.SQLException: Incorrect string value: '\xE5\xBC\xA0\xE4\xB8\x89' for column 'name' at row 1
org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:83)
org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:80)
org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:80)
org.springframework.orm.hibernate3.HibernateAccessor.convertJdbcAccessException(HibernateAccessor.java:424)
org.springframework.orm.hibernate3.HibernateAccessor.convertHibernateAccessException(HibernateAccessor.java:410)
org.springframework.orm.hibernate3.HibernateTemplate.doExecute(HibernateTemplate.java:424)
org.springframework.orm.hibernate3.HibernateTemplate.executeWithNativeSession(HibernateTemplate.java:374)
org.springframework.orm.hibernate3.HibernateTemplate.save(HibernateTemplate.java:694)
dao.HibernateUserDao.save(HibernateUserDao.java:9)
exception
org.springframework.jdbc.UncategorizedSQLException: Hibernate operation: could not insert: [entity.User]; uncategorized SQLException for SQL [insert into student.user (name, password, age, sex, province, city) values (?, ?, ?, ?, ?, ?)]; SQL state [HY000]; error code [1366]; Incorrect string value: '\xE5\xBC\xA0\xE4\xB8\x89' for column 'name' at row 1; nested exception is java.sql.SQLException: Incorrect string value: '\xE5\xBC\xA0\xE4\xB8\x89' for column 'name' at row 1
org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:83)
org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:80)
org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:80)
org.springframework.orm.hibernate3.HibernateAccessor.convertJdbcAccessException(HibernateAccessor.java:424)
org.springframework.orm.hibernate3.HibernateAccessor.convertHibernateAccessException(HibernateAccessor.java:410)
org.springframework.orm.hibernate3.HibernateTemplate.doExecute(HibernateTemplate.java:424)
org.springframework.orm.hibernate3.HibernateTemplate.executeWithNativeSession(HibernateTemplate.java:374)
org.springframework.orm.hibernate3.HibernateTemplate.save(HibernateTemplate.java:694)
dao.HibernateUserDao.save(HibernateUserDao.java:9)
#12
User类中name属性设置的是String类型啊! 数据库中用的是varchar类型,结果查数据的时候
ERROR 1366 (HY000): Incorrect string value: '\xC9\xCF\xC8\xFD' for column 'name'
字段类型应该不会错啊!
你这乱码奇怪。
有没有异常信息?如果有把异常信息贴出来看看。另外,你这个是jsp跳jsp出现乱码,还是servlet跳jsp出现乱码?还是其它情况?
HTTP Status 500 - Hibernate operation: could not insert: [entity.User]; uncategorized SQLException for SQL [insert into student.user (name, password, age, sex, province, city) values (?, ?, ?, ?, ?, ?)]; SQL state [HY000]; error code [1366]; Incorrect string value: '\xE5\xBC\xA0\xE4\xB8\x89' for column 'name' at row 1; nested exception is java.sql.SQLException: Incorrect string value: '\xE5\xBC\xA0\xE4\xB8\x89' for column 'name' at row 1
表单提交后,交给一个action处理 ,result给了一个Jsp页面。
你的问题是这样的,表单提交给action的时候,由于提交name值的是乱码,导致hibernate做数据库插入操作抛出异常。
我给你的解决方案有两个,第一个是配置struts2的编码
第二个是用过滤器Filter。
请移步 http://www.360doc.com/content/08/0424/10/61497_1212275.shtml
#13
你本来的name值就是\xC9\xCF\xC8\xFD?还是转码的?
这个可能超长了啊。。。
超长??? 不太理解, 我设置的范围在20 varchar(20);
#14
action里面设置字符编码
#15
User类中name属性设置的是String类型啊! 数据库中用的是varchar类型,结果查数据的时候
ERROR 1366 (HY000): Incorrect string value: '\xC9\xCF\xC8\xFD' for column 'name'
字段类型应该不会错啊!
你这乱码奇怪。
有没有异常信息?如果有把异常信息贴出来看看。另外,你这个是jsp跳jsp出现乱码,还是servlet跳jsp出现乱码?还是其它情况?
HTTP Status 500 - Hibernate operation: could not insert: [entity.User]; uncategorized SQLException for SQL [insert into student.user (name, password, age, sex, province, city) values (?, ?, ?, ?, ?, ?)]; SQL state [HY000]; error code [1366]; Incorrect string value: '\xE5\xBC\xA0\xE4\xB8\x89' for column 'name' at row 1; nested exception is java.sql.SQLException: Incorrect string value: '\xE5\xBC\xA0\xE4\xB8\x89' for column 'name' at row 1
表单提交后,交给一个action处理 ,result给了一个Jsp页面。
你的问题是这样的,表单提交给action的时候,由于提交name值的是乱码,导致hibernate做数据库插入操作抛出异常。
我给你的解决方案有两个,第一个是配置struts2的编码
第二个是用过滤器Filter。
请移步 http://www.360doc.com/content/08/0424/10/61497_1212275.shtml
Thank you! 原来是action中没有设置编码格式。
#16
action里面设置字符编码
Thank you
#1
jsp 页面中有三个地方设置编码,你都设置成了UTF-8吗?
<%@ page language="java" contentType="text/html; charset=utf-8"
import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<%-- <%@ taglib uri="/struts-dojo-tags" prefix="sx"%> --%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<sx:head locale="zh_CN" parseContent="true" extraLocales="zh" />
<base href="<%=basePath%>">
<title>My JSP 'addGoods.jsp' starting page</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
(下面的省略)
<%@ page language="java" contentType="text/html; charset=utf-8"
import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<%-- <%@ taglib uri="/struts-dojo-tags" prefix="sx"%> --%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<sx:head locale="zh_CN" parseContent="true" extraLocales="zh" />
<base href="<%=basePath%>">
<title>My JSP 'addGoods.jsp' starting page</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
(下面的省略)
#2
设置上了!结果还是一样啊。
#3
你确认是中文乱码造成的?不是字段类型的错误?
#4
User类中name属性设置的是String类型啊! 数据库中用的是varchar类型,结果查数据的时候
ERROR 1366 (HY000): Incorrect string value: '\xC9\xCF\xC8\xFD' for column 'name'
字段类型应该不会错啊!
ERROR 1366 (HY000): Incorrect string value: '\xC9\xCF\xC8\xFD' for column 'name'
字段类型应该不会错啊!
#5
你的sql语句呢??是不是其他的问题,跟字符集无关。。。
#6
User类中name属性设置的是String类型啊! 数据库中用的是varchar类型,结果查数据的时候
ERROR 1366 (HY000): Incorrect string value: '\xC9\xCF\xC8\xFD' for column 'name'
字段类型应该不会错啊!
你这乱码奇怪。
有没有异常信息?如果有把异常信息贴出来看看。另外,你这个是jsp跳jsp出现乱码,还是servlet跳jsp出现乱码?还是其它情况?
#7
这个用的是Hibernate框架对数据库进行操作的
语句都打印出来了
Hibernate:
insert
into
student.user
(name, password, age, sex, province, city)
values
(?, ?, ?, ?, ?, ?)
语句都打印出来了
Hibernate:
insert
into
student.user
(name, password, age, sex, province, city)
values
(?, ?, ?, ?, ?, ?)
#8
User类中name属性设置的是String类型啊! 数据库中用的是varchar类型,结果查数据的时候
ERROR 1366 (HY000): Incorrect string value: '\xC9\xCF\xC8\xFD' for column 'name'
字段类型应该不会错啊!
你这乱码奇怪。
有没有异常信息?如果有把异常信息贴出来看看。另外,你这个是jsp跳jsp出现乱码,还是servlet跳jsp出现乱码?还是其它情况?
HTTP Status 500 - Hibernate operation: could not insert: [entity.User]; uncategorized SQLException for SQL [insert into student.user (name, password, age, sex, province, city) values (?, ?, ?, ?, ?, ?)]; SQL state [HY000]; error code [1366]; Incorrect string value: '\xE5\xBC\xA0\xE4\xB8\x89' for column 'name' at row 1; nested exception is java.sql.SQLException: Incorrect string value: '\xE5\xBC\xA0\xE4\xB8\x89' for column 'name' at row 1
表单提交后,交给一个action处理 ,result给了一个Jsp页面。
#9
User类中name属性设置的是String类型啊! 数据库中用的是varchar类型,结果查数据的时候
ERROR 1366 (HY000): Incorrect string value: '\xC9\xCF\xC8\xFD' for column 'name'
字段类型应该不会错啊!
#10
你本来的name值就是\xC9\xCF\xC8\xFD?还是转码的?
这个可能超长了啊。。。
这个可能超长了啊。。。
#11
service业务逻辑层调用userDao中的save()方式开始出问题了
exception
org.springframework.jdbc.UncategorizedSQLException: Hibernate operation: could not insert: [entity.User]; uncategorized SQLException for SQL [insert into student.user (name, password, age, sex, province, city) values (?, ?, ?, ?, ?, ?)]; SQL state [HY000]; error code [1366]; Incorrect string value: '\xE5\xBC\xA0\xE4\xB8\x89' for column 'name' at row 1; nested exception is java.sql.SQLException: Incorrect string value: '\xE5\xBC\xA0\xE4\xB8\x89' for column 'name' at row 1
org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:83)
org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:80)
org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:80)
org.springframework.orm.hibernate3.HibernateAccessor.convertJdbcAccessException(HibernateAccessor.java:424)
org.springframework.orm.hibernate3.HibernateAccessor.convertHibernateAccessException(HibernateAccessor.java:410)
org.springframework.orm.hibernate3.HibernateTemplate.doExecute(HibernateTemplate.java:424)
org.springframework.orm.hibernate3.HibernateTemplate.executeWithNativeSession(HibernateTemplate.java:374)
org.springframework.orm.hibernate3.HibernateTemplate.save(HibernateTemplate.java:694)
dao.HibernateUserDao.save(HibernateUserDao.java:9)
exception
org.springframework.jdbc.UncategorizedSQLException: Hibernate operation: could not insert: [entity.User]; uncategorized SQLException for SQL [insert into student.user (name, password, age, sex, province, city) values (?, ?, ?, ?, ?, ?)]; SQL state [HY000]; error code [1366]; Incorrect string value: '\xE5\xBC\xA0\xE4\xB8\x89' for column 'name' at row 1; nested exception is java.sql.SQLException: Incorrect string value: '\xE5\xBC\xA0\xE4\xB8\x89' for column 'name' at row 1
org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:83)
org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:80)
org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:80)
org.springframework.orm.hibernate3.HibernateAccessor.convertJdbcAccessException(HibernateAccessor.java:424)
org.springframework.orm.hibernate3.HibernateAccessor.convertHibernateAccessException(HibernateAccessor.java:410)
org.springframework.orm.hibernate3.HibernateTemplate.doExecute(HibernateTemplate.java:424)
org.springframework.orm.hibernate3.HibernateTemplate.executeWithNativeSession(HibernateTemplate.java:374)
org.springframework.orm.hibernate3.HibernateTemplate.save(HibernateTemplate.java:694)
dao.HibernateUserDao.save(HibernateUserDao.java:9)
#12
User类中name属性设置的是String类型啊! 数据库中用的是varchar类型,结果查数据的时候
ERROR 1366 (HY000): Incorrect string value: '\xC9\xCF\xC8\xFD' for column 'name'
字段类型应该不会错啊!
你这乱码奇怪。
有没有异常信息?如果有把异常信息贴出来看看。另外,你这个是jsp跳jsp出现乱码,还是servlet跳jsp出现乱码?还是其它情况?
HTTP Status 500 - Hibernate operation: could not insert: [entity.User]; uncategorized SQLException for SQL [insert into student.user (name, password, age, sex, province, city) values (?, ?, ?, ?, ?, ?)]; SQL state [HY000]; error code [1366]; Incorrect string value: '\xE5\xBC\xA0\xE4\xB8\x89' for column 'name' at row 1; nested exception is java.sql.SQLException: Incorrect string value: '\xE5\xBC\xA0\xE4\xB8\x89' for column 'name' at row 1
表单提交后,交给一个action处理 ,result给了一个Jsp页面。
你的问题是这样的,表单提交给action的时候,由于提交name值的是乱码,导致hibernate做数据库插入操作抛出异常。
我给你的解决方案有两个,第一个是配置struts2的编码
第二个是用过滤器Filter。
请移步 http://www.360doc.com/content/08/0424/10/61497_1212275.shtml
#13
你本来的name值就是\xC9\xCF\xC8\xFD?还是转码的?
这个可能超长了啊。。。
超长??? 不太理解, 我设置的范围在20 varchar(20);
#14
action里面设置字符编码
#15
User类中name属性设置的是String类型啊! 数据库中用的是varchar类型,结果查数据的时候
ERROR 1366 (HY000): Incorrect string value: '\xC9\xCF\xC8\xFD' for column 'name'
字段类型应该不会错啊!
你这乱码奇怪。
有没有异常信息?如果有把异常信息贴出来看看。另外,你这个是jsp跳jsp出现乱码,还是servlet跳jsp出现乱码?还是其它情况?
HTTP Status 500 - Hibernate operation: could not insert: [entity.User]; uncategorized SQLException for SQL [insert into student.user (name, password, age, sex, province, city) values (?, ?, ?, ?, ?, ?)]; SQL state [HY000]; error code [1366]; Incorrect string value: '\xE5\xBC\xA0\xE4\xB8\x89' for column 'name' at row 1; nested exception is java.sql.SQLException: Incorrect string value: '\xE5\xBC\xA0\xE4\xB8\x89' for column 'name' at row 1
表单提交后,交给一个action处理 ,result给了一个Jsp页面。
你的问题是这样的,表单提交给action的时候,由于提交name值的是乱码,导致hibernate做数据库插入操作抛出异常。
我给你的解决方案有两个,第一个是配置struts2的编码
第二个是用过滤器Filter。
请移步 http://www.360doc.com/content/08/0424/10/61497_1212275.shtml
Thank you! 原来是action中没有设置编码格式。
#16
action里面设置字符编码
Thank you