问题描述
我程序中的编码为UTF-8,安装MYSQL数据库时设置编码是utf8,用SQL向数据库里插入中文没有问题,但就是在程序中用hibernate保存数据时,后台接收的中文正常,控制台打印的SQL语句中中文变成乱码了,也没插入成功。请问这是怎么回事儿啊?我的连接数据库字符串是jdbc:mysql://localhost:3306/tour?characterEncoding=utf8急急~望各位指教!
解决方案
解决方案二:
首先页面是否设置编码格式为utf-8?
解决方案三:
<propertyname="connection.url">jdbc:mysql://localhost:3306/sports?useUnicode=true&characterEncoding=utf-8</property>连接数据库这样写页面数据库程序中统一UTF-8程序中设置写到过滤器里这样还有乱码我头给你当球踢
解决方案四:
好像如2楼所说,useUnicode是要写的。还有,LZ所说的“hibernate保存数据时,后台接收的中文正常”,后台指的是什么?
解决方案五:
+1引用2楼zhouhongbin123465的回复:
<propertyname="connection.url">jdbc:mysql://localhost:3306/sports?useUnicode=true&amp;characterEncoding=utf-8</property>连接数据库这样写页面数据库程序中统一UTF-8程序中设置写到过滤器里这样还有乱码我头给你当球踢
解决方案六:
该回复于2011-02-16 10:19:17被版主删除
解决方案七:
引用3楼magong的回复:
好像如2楼所说,useUnicode是要写的。还有,LZ所说的“hibernate保存数据时,后台接收的中文正常”,后台指的是什么?
就是在Action里接收的是不是乱码,页面编码是UTF-8的
解决方案八:
引用6楼fanyuna的回复:
后台接收的中文正常,控制台打印的SQL语句中中文变成乱码了就是在Action里接收的是不是乱码,页面编码是UTF-8的
你的意思是Action中接收到的来自于页面的数据不是乱码,但是在Action中打印到控制台的SQL语句中就是乱码了?SQL语句如何得到的呢?
解决方案九:
你的SQL输出是hibernate的showSQL还是你自己打印的应该还是你入库时候造成的乱码
解决方案十:
response有setCharaterCode()么?
解决方案十一:
引用8楼zn85600301的回复:
你的SQL输出是hibernate的showSQL还是你自己打印的应该还是你入库时候造成的乱码
<propertyname="connection.url">jdbc:mysql://localhost:3306/sports?useUnicode=true&amp;characterEncoding=utf-8</property>“hibernate保存数据时,后台接收的中文正常,控制台打印的SQL语句中中文变成乱码了”说明是你入库时造成的乱码,你也可以看下你的数据库中中文对应的那一列数据类型和长度是否满足条件。
解决方案十二:
hibernateset属性时,那个值还不是乱码,SQL输出是hibernate的showSQL,SQL这里的中文就成了乱码,所以记录也没插进去,数据库表中字段类型是字符串型的,跟长度没啥关系吧,否则就不是这样的错误啊
解决方案十三:
setCharaterCode()
解决方案十四:
引用11楼fanyuna的回复:
hibernateset属性时,那个值还不是乱码,SQL输出是hibernate的showSQL,SQL这里的中文就成了乱码,
贴一条HibernateshowSQL出来的乱码看看吧。
解决方案十五:
该回复于2011-02-16 16:15:32被版主删除
解决方案:
打印的SQL如下:insertintotour.line(name,type,day,startAddr,destAddr,arrange,respPerson,trafficType,costInclude,costUnInclude,hotPoint,specialPoint,order,infoControl,clickCount,pic,addTime)values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)但报错如下:com.mysql.jdbc.exceptions.MySQLSyntaxErrorException:YouhaveanerrorinyourSQLsyntax;checkthemanualthatcorrespondstoyourMySQLserverversionfortherightsyntaxtousenear'order,infoControl,clickCount,pic,addTime)values('11',1,0,0,0,'',1,1'atline1谢谢大家了!
解决方案:
哦,这里的?不是乱码,HibernateshowSQL都是这样的。你的问题是有个字段叫order,是SQL关键字,改字段名好了
解决方案:
哦,使用mysql关键字这是一个问题,谢谢magong!我传中文时真有问题,(name,type,day..)values('乱码',1..),还用就是文本编辑器中的内容接收时是一个HTML,这个HTML字符串插入时也有问题,老在结束标记</这儿报错!
解决方案:
在后台往前台传值的时候之前还得编下码编成UTF-8
解决方案:
引用18楼jackey_ctdw的回复:
在后台往前台传值的时候之前还得编下码编成UTF-8
后台传前台?我是接收前台的值插入到数据库啊。我的数据库连接字符串也改为jdbc:mysql://localhost:3306/tour?useUnicode=true&characterEncoding=utf-8了,后台接收时还不是乱码,hibernateset时也不是,但就在插入时是乱码了,郁闷!
解决方案:
页面编码看看
解决方案:
引用19楼fanyuna的回复:
后台接收时还不是乱码,hibernateset时也不是,但就在插入时是乱码了,郁闷!
你说的后台接收时指的是Action中,对吧Hibernateset时指的是POJOBean的setXXX方法的调用时,也是在Action中,对吧插入时指的是什么呢?
解决方案:
只要保证从前台到后台,字符集都一致,中文是没问题的,要检查下哪里设置字符集有不同的,看看是不是和过滤器中设置的不一致?
解决方案:
order是关键字
解决方案:
先查看一下展现文件的编码是不是UTF8或者在my.ini这个文件中看看客户端跟服务器的编码是不是都是UTF8,很有可能是因为客户端和服务端的编码不一致造成的