hibernate向数据库插入中文时乱码

问题描述

我程序中的编码为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&amp;characterEncoding=utf-8</property>连接数据库这样写页面数据库程序中统一UTF-8程序中设置写到过滤器里这样还有乱码我头给你当球踢
解决方案四:
好像如2楼所说,useUnicode是要写的。还有,LZ所说的“hibernate保存数据时,后台接收的中文正常”,后台指的是什么?
解决方案五:
+1引用2楼zhouhongbin123465的回复:

<propertyname="connection.url">jdbc:mysql://localhost:3306/sports?useUnicode=true&amp;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;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&amp;characterEncoding=utf-8了,后台接收时还不是乱码,hibernateset时也不是,但就在插入时是乱码了,郁闷!
解决方案:
页面编码看看
解决方案:
引用19楼fanyuna的回复:

后台接收时还不是乱码,hibernateset时也不是,但就在插入时是乱码了,郁闷!

你说的后台接收时指的是Action中,对吧Hibernateset时指的是POJOBean的setXXX方法的调用时,也是在Action中,对吧插入时指的是什么呢?
解决方案:
只要保证从前台到后台,字符集都一致,中文是没问题的,要检查下哪里设置字符集有不同的,看看是不是和过滤器中设置的不一致?
解决方案:
order是关键字
解决方案:
先查看一下展现文件的编码是不是UTF8或者在my.ini这个文件中看看客户端跟服务器的编码是不是都是UTF8,很有可能是因为客户端和服务端的编码不一致造成的

时间: 2024-09-20 00:42:24

hibernate向数据库插入中文时乱码的相关文章

java向mysql数据库插入中文时乱码

问题描述 请各位赐教! 解决方案 1.数据库安装时就要选择utf-8为默认编码2.数据库连接的url写法如下:jdbc:mysql://localhost:3306/carshow?useUnicode=true&characterEncoding=utf83.在进行数据库操作时先打印或者断点调试下,看从页面过来数据是否已经乱码大致就以上几步,开发时最好选定一种统一的编码,给自己少添点麻烦.解决方案二:LZ这个说的太广泛了,这个问题可能原因比较多,至少要保证数据库的编码格式和你在java里对数据

MySQL插入中文不乱码的5种方法_Mysql

方法一: 登录MySQL,先做 set names latin1 ,然后在更新语句或者执行SQL语句 mysql> set names latin1; mysql> source test.sql; 方法二:在SQL文件中指定set names latin1;然后登录MySQL,执行相应文件 [root@localhost ~]# cat test.sql set names latin1; insert *****************; mysql> source test.sql

hibernate-Hibernate向Mysql数据库插入数据出现乱码问号

问题描述 Hibernate向Mysql数据库插入数据出现乱码问号 在MyEclipse环境下向Mysql数据库插入数据出现乱码问号,于是做了如下设置: MyEclipse字符编码已经设为utf-8(window->preference...设置),MySQL的my.ini下设为default-character-set=utf8,hibernate.cfg.xml下jdbc:mysql://localhost:3306/users?useUnicode=true&characterEnco

编码格式-mysql数据库插入中文 老是出错

问题描述 mysql数据库插入中文 老是出错 如图 已经在配置文件中改了编码格式 但是还是插不了中文啊 解决方案 大概缺少了GB2312 再增加GB2312配置 解决方案二: 修改成utf-8试试 解决方案三: 你创建的数据库的编码格式统一了吗?最好统一成utf-8. 解决方案四: 其实 你可以使用客户端试试,sqlyog 或者 navicat 解决方案五: 通常 使字库确实或字符编码设置不当造成的. 解决方案六: 建议UTF-8... 解决方案七: 你使用 show create table

解决asp.net core在输出中文时乱码的问题_实用技巧

前言 作为一个.NET Web开发者,我最伤心的时候就是项目开发部署时面对Windows Server上贫瘠的解决方案,同样是神器Nginx,Win上的Nginx便始终不如Linux上的,你或许会说"干嘛不用windows自带的NLB呢",那这就是我这个小鸟的从众心理了,君不见Stack Overflow 2016最新架构中,用的负载和缓存技术也都是采用在Linux上已经成熟的解决方案吗.没办法的时候找个适合的解决办法是好事,有办法的时候当然要选择最好的解决办法. 所幸,.ASP.NE

Java中URL传中文时乱码的解决方法_java

前言 Java中URL传中文时乱码的问题相信不少朋友都遇到过,最近就遇到一个问题,就是在Action当中把一条中文信息绑定在URL的后面,ActionForward到别一个页面时,用reqeust.getParameter取出是出现乱码的问题. 解决办法 1.对要进行URL传递的中文字符进行编码: String message = java.net.URLEncoder.encode("中文字符","utf-8"); 2.在取URL传递中文的页面对字符进行解码: S

MySQL插入中文汉字乱码问题解决方案

1.脚本语句 导入之前,先charset gbk. 修改表字段编码: 注意:这里用导入的方式插入的数据,控制台会报错.在我们的客户端工具中执行,就不会报错了. 2.MyBatis中,xml文件引入成为mapper的配置: 3.写junit测试类的时候,中文数据不能正常读取: 解决办法:字符串连接参数要添加一下.. 修改my.ini文件 用记事本或UitraEdit打开mysql数据库安装目录下的my.ini文件打开, 然后Ctrl+F搜索default-character-set,将后面的字符集

Linux下进行MYSQL编程时插入中文乱码的解决方案_php技巧

插入中文是乱码,尝试了许多方法,比如我先把vim里设置为:set fileencoding=utf-8不起作用,后来想想也对,和vim没什么关系 然后就尝试c#代码,用Encoding.UTF8.GetString()方法,后来也不对. 我就郁闷了,忽然想起来莫不是mysql的设置问题??? 于是,sudo nano /etc/mysql/my.cnf 插入下面红色代码,default-character-set = utf8,成功,不乱码了~~~根本不用什么Encoding..... # Th

javaee hib...-用hibernate操作mysql出现中文乱码

问题描述 用hibernate操作mysql出现中文乱码 用hibernate操作mysql出现中文乱码.按照 网上教程依旧出现乱码,求助.. 解决方案 你先确保,mysql的表,eclipse,服务器如tomcat,使用的是同一种Encoding(编码) 解决方案二: 在创建数据库表的时候设置编码default charset=utf-8这样 数据库的编码就不会出现问题了,随后在服务器端中tomcat中有一个配置文件,可以设置编码形式,但是这种情况很少出现, 另外就是,在数据显示的时候可以设置