hibernate hbm2ddl.import_files 中文乱码问题

hibernate提供如下配置,支持在新建数据库时,执行import文件初始化数据库:

<prop key="hibernate.hbm2ddl.auto">${hibernate.hbm2ddl.auto}</prop>
<prop key="hibernate.hbm2ddl.import_files">init_sql.sql</prop>

在init_sql.sql文件中,写了这样一条语句:

insert into sys_menu(id, href, icon, is_activiti, is_show, name, parent_ids, permission, sort, parent_id) values(‘1‘,‘/hello‘,‘‘,‘0‘,‘1‘,‘欢迎页‘,‘‘,‘‘,1,‘1‘);

在启动时,初始化报错,看到其中的sql语句中文乱码:

org.hibernate.tool.hbm2ddl.ImportScriptException: Error during statement execution (file: ‘init_sql.sql‘): insert into sys_menu(id, href, icon, is_activiti, is_show, name, parent_ids, permission, sort, parent_id) values(‘1‘,‘/hello‘,‘‘,‘0‘,‘1‘,‘娆㈣繋椤?,‘‘,‘‘,1,‘1‘)

init_sql.sql文件是utf8编码,与数据库编码一致。配置hibernate编码格式如下:

<prop key="hibernate.connection.useUnicode">true</prop>
<prop key="hibernate.connection.characterEncoding">UTF-8</prop>
<prop key="hibernate.connection.charSet">UTF-8</prop>

问题依旧,于是开始找解决办法,找到了这里,

http://javacimrman.blogspot.ru/2011/07/hibernate-importsql-encoding-when.html

说的是maven工程如何解决这个问题。而我的工程是用tomcat启动的,类推,启动时应配置-Dfile.encoding=UTF8,步骤如下:

右键单击工程-->debug as/run as-->debug configuration/run configuration-->Arguments-->VM Arguments中加入-Dfile.encoding=UTF8

启动即可。

但是现在console的输出成了这样:

鍗佷竴鏈?18, 2014 10:40:27 涓婂崍 org.apache.catalina.core.ApplicationContext log
淇℃伅: Initializing Spring FrameworkServlet ‘spring‘
鍗佷竴鏈?18, 2014 10:40:29 涓婂崍 org.apache.coyote.http11.Http11Protocol start
淇℃伅: Starting Coyote HTTP/1.1 on http-8080
鍗佷竴鏈?18, 2014 10:40:29 涓婂崍 org.apache.jk.common.ChannelSocket init
淇℃伅: JK: ajp13 listening on /0.0.0.0:8009
鍗佷竴鏈?18, 2014 10:40:29 涓婂崍 org.apache.jk.server.JkMain start
淇℃伅: Jk running ID=0 time=0/32  config=null
鍗佷竴鏈?18, 2014 10:40:29 涓婂崍 org.apache.catalina.startup.Catalina start
淇℃伅: Server startup in 12756 ms

所以现在应该修改一下console的编码(如下图):

1.Run -> Run configurations...

2.在Java Application中选中你的引用程序。

3.选中Common标签页。

4.在Console encoding项中选择Other,然后选中UTF-8。

5.点击Apply按钮。

另外,这里关于hibernate的配置不影响这里的问题,去掉后应用上述方法依然可以work。

<prop key="hibernate.connection.useUnicode">true</prop>
<prop key="hibernate.connection.characterEncoding">UTF-8</prop>
<prop key="hibernate.connection.charSet">UTF-8</prop>
时间: 2024-08-29 00:14:20

hibernate hbm2ddl.import_files 中文乱码问题的相关文章

hibernate mysql写入中文乱码 解决

启动hibernate项目,自动创建表,插入数据之后发现写入表里的数据里的中文是乱码.按如下方法解决了: 修改数据库的字符集为UTF-8,这个可以通过mysql的客户端软件里右键要修改的数据库的属性更改. 修改Client默认字符集为UTF8.windows下在mysql安装目录(我的计算机操作系统是Windows 7 64,默认的安装路径在:C:\Program Files (x86)\MySQL\MySQL Server 5.0)下找到my.ini,将里面的default-character

记一次 Hibernate 插入数据中文乱码报错解决

错误描述 程序运行,向表中插入数据(包含中文)报错:\xE6\xB2\x88\xE9\x9B\xAA... 但是自己另外新建一个数据库手动插入数据中文正常,同样修改数据库,表的编码之后同样不行.而且 MySQL5.7下也会出现这种情况无法解决. 问题解决 在 Hibernate 主配置文件中,我们会配置数据库方言,一般配置如下: <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect<

hibernate下 mysql中文乱码

mysql的字符集是utf-8 web工程环境字符集是utf-8 应该是hibernate向数据库中更新的时候错误 数据库了解url改成 jdbc:mysql://localhost:3306/fdoa?useUnicode=true&characterEncoding=utf8 没问题 在xml中注意&符号

SSH项目web.xml文件的常用配置【struts2的过滤器、spring监听器、解决Hibernate延迟加载问题的过滤器、解决中文乱码的过滤器】

配置web.xml(struts2的过滤器.spring监听器.解决Hibernate延迟加载问题的过滤器.解决中文乱码的过滤器) <!-- 解决中文乱码问题 --> <filter> <filter-name>characterEncodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-c

彻底解决Spring MVC 中文乱码 问题

目录(?)[+] 1:表单提交controller获得中文参数后乱码解决方案 注意: jsp页面编码设置为UTF-8 form表单提交方式为必须为post,get方式下面spring编码过滤器不起效果 [html] view plain copy <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> [html] view plain copy <

mysql写入中文乱码

乱码可谓是程序猿的常见问题了,下面就大致介绍几种常见的情况.常见于页面.前台到后台传值.写入到数据库这三个方面. 1.页面乱码 页面相对是最为容易解决的,往往是在相应的jsp页面或者html页面设置相关的字符集即可.如 <%@page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> 2.传值乱码 在传值过程中,也是乱码出现的频繁

Eclipse查询MySql、添加中文乱码问题

一.设置MyEclipse的字符编码,步骤如下: 1.进入Window--Preferences--General--Workspace,Text file encoding 选项中默认的Default(GBK)选项更改为Other,并将值设为utf-8: 2.进入Window--Preferences--MyEclipse--Files and Editors,将这个选项下面的:ASP and PHP.CSS.DTD.HTML.JSP.XML中的字符编码全部更改为utf-8: 3.如果有必要的

SpringMVC解决中文乱码问题

1:表单提交controller获得中文参数后乱码解决方案 注意:  jsp页面编码设置为UTF-8 form表单提交方式为必须为post,get方式下面spring编码过滤器不起效果   <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <form action="${ctx}/user/addUser" name=&q

如何彻底解决jsp页面中文乱码及数据库乱码

最近自己闲做一个小项目,搭建环境框架SSH+MySQL数据库,遇到一个问题:jsp页面中文显示乱码,数据库插入数据和更新数据时中文也显示乱码,后来在网上找了许多解决方法,还是折腾了两天才把问题解决,下面总结一下彻底解决中文乱码问题: 在项目里的我统一使用UTF-8的编码方式 1.知道自己安装Mysql数据库安装配置时选择了什么编码方式,如果之前安装,现在不太清楚,建议重新安装Mysql数据库,安装配置时选择utf8 (这里有个小技巧:不用卸载Mysql数据,找到安装Mysql数据库目录:D:\M