Hibernate配置文件中指定MySQL数据库的编码方式

35 篇文章 0 订阅
29 篇文章 0 订阅

Hibernate配置文件中指定MySQL数据库的编码方式:

配置端主要有两种方案:

1)

<hibernate-configuration> 

<session-factory> 
<property name="dialect"> 
org.hibernate.dialect.MySQLDialect 
</property> 
<property name="connection.url"> 
jdbc:mysql://localhost:3306/yourDateBase?useUnicode=true&amp;characterEncoding=utf-8 
</property> 
<property name="connection.username">root</property> 
<property name="connection.password">123456</property> 
<property name="connection.driver_class"> 
com.mysql.jdbc.Driver 
</property> 
<property name="myeclipse.connection.profile">con</property> 
<mapping resource="com/hib/entity/Mytable.hbm.xml" /> 

</session-factory> 

2)

<hibernate-configuration> 

<session-factory> 
<property name="dialect"> 
org.hibernate.dialect.MySQLDialect 
</property> 
<property name="connection.url"> 
jdbc:mysql://localhost:3306/yourDatebase

</property>

</hibernate-configuration><property name="connectio.useUnicode">true</property> 
<property name="connection.characterEncoding">utf-8</property> 

<property name="connection.username">root</property> 
<property name="connection.password">root</property> 
<property name="connection.driver_class"> 
com.mysql.jdbc.Driver 
</property> 
<property name="myeclipse.connection.profile">con</property> 
<mapping resource="com/hib/entity/Mytable.hbm.xml" /> 

</session-factory>

=============================================
MySql Command Line Client乱码 


乱码问题:  
数据库是MySql,存储的是中文的内容用MySql Command Line Client 查看是乱码,但是用MySql Administrator查看却显示正确。 


MySQL的安装目录下有个配置文件my.ini ,里面有客户端和服务器端的编码方式的设置。 
你在服务端的默认编码设置为UTF8,那么存储数据都是采用UTF8的方式,这是对的,但如果要从MySql Command Line Client来查看数据,也就是客户端了,如果客户端设置的默认编码也是UTF8那么就会出现乱码的,所以将客户端的默认编码修改为gbk就可以了,不影响数据存储采用的编码,只是在我们用MySql Command Line Client查看数据时返回给我们转成gbk的编码的中文。 
这样再不需要每次都 set names "gbk" 了。 

具体的设置如下: 
my.ini 中: 

客户端的: 

[client] 

port=3306 

[mysql] 

default-character-set=gbk 


服务端的: 

[mysqld] 

# The default character set that will be used when a new schema or table is 
# created and no character set is defined 
default-character-set=utf8

一、MySql 端配置 

1. 修改my.ini文件 
[mysql] 
default-character-set=utf8    
说明:修改链接字符集和校对规则,它会同时设置character_set_client, character_set_connection, character_set_results。 

也可以修改 
[mysqld] 
default-character-set=utf8 
说明: 这里修改的是服务器的字符集和校对规则。 

查看当前服务器的字符集和校对规则: 
mysql> show variables like 'character_set_server';   
mysql> show variables like 'collation_server'; 

2. 修改数据库和表的字符集和校队规则。 
例如: 
-- Create Database. 
drop database if exists HRDB; 
create database HRDB DEFAULT CHARACTER SET utf8; 
use HRDB; 

-- 角色表 
create table HR_ROLE ( 
ID bigint not null auto_increment, 
NAME varchar(20) not null unique, 
primary key (ID) 
) ENGINE=INNODB DEFAULT CHARACTER SET utf8; 

查看当前数据库的字符集和校对规则: 
mysql> show variables like 'character_set_database';   
mysql> show variables like 'collation_database'; 

查看表的字符集和校对规则: 
mysql> show create table HR_ROLE \G; 

二、Hibernate端 

1. 修改 hibernate.cfg.xml文件。 
增加: 
   <!-- Supported UTF-8 character set --> 
   <property name="connection.useUnicode">true</property> 
   <property name="connection.characterEncoding">UTF-8</property>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值