解决hibernate向mysql插入中文乱码问题
一.mysql的问题解决
MySQL会出现中文乱码的原因不外乎下列几点:
1.server本身设定问题,例如还停留在latin1
2.table的语系设定问题(包含character与collation)
3.客户端程式(例如php)的连线语系设定问题
(一)、避免创建数据库及表出现中文乱码和查看编码方法
1、创建数据库的时候:
- CREATE DATABASE `test`
- CHARACTER SET 'utf8'
- COLLATE 'utf8_general_ci';
2、建表的时候
- CREATE TABLE `database_user` (
- `ID` varchar(40) NOT NULL default '',
- `UserID` varchar(40) NOT NULL default '',
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
这3个设置好了,基本就不会出问题了,即建库和建表时都使用相同的编码格式。
但是如果你已经建了库和表可以通过以下方式进行查询。
1.查看默认的编码格式:
- mysql> show variables like "%char%";
- +--------------------------+---------------+
- | Variable_name | Value |
- +--------------------------+---------------+
- | character_set_client | gbk |
- | character_set_connection | gbk |
- | character_set_database | utf8 |
- | character_set_filesystem | binary |
- | character_set_results | gbk |
- | character_set_server | utf8 |
- | character_set_system | utf8 |
- +--------------------------+-------------+
注:以前2个来确定,可以使用set names utf8,set names gbk设置默认的编码格式;
执行SET NAMES utf8的效果等同于同时设定如下
- SET character_set_client='utf8';
- SET character_set_connection='utf8';
- SET character_set_results='utf8';
2.查看test数据库的编码格式:
- mysql> show create database test;
- +------------+------------------------------------------------------------------------------------------------+
- | Database | Create Database |
- +------------+------------------------------------------------------------------------------------------------+
- | test | CREATE DATABASE `test` /*!40100 DEFAULT CHARACTER SET gbk */ |
- +------------+------------------------------------------------------------------------------------------------+
3.查看yjdb数据表的编码格式:
- mysql> show create table yjdb;
- | yjdb | CREATE TABLE `yjdb` (
- `sn` int(5) NOT NULL AUTO_INCREMENT,
- `type` varchar(10) NOT NULL,
- `brc` varchar(6) NOT NULL,
- `teller` int(6) NOT NULL,
- `telname` varchar(10) NOT NULL,
- `date` int(10) NOT NULL,
- `count` int(6) NOT NULL,
- `back` int(10) NOT NULL,
- PRIMARY KEY (`sn`),
- UNIQUE KEY `sn` (`sn`),
- UNIQUE KEY `sn_2` (`sn`)
- ) ENGINE=MyISAM AUTO_INCREMENT=1826 DEFAULT CHARSET=gbk ROW_FORMAT=DYNAMIC |
(二)、避免导入数据有中文乱码的问题
1:将数据编码格式保存为utf-8
设置默认编码为utf8:
set names utf8;
设置数据库db_name默认为utf8:
- ALTER DATABASE `db_name` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
设置表tb_name默认编码为utf8:
- ALTER TABLE `tb_name` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
导入:
- LOAD DATA LOCAL INFILE 'C:\\utf8.txt' INTO TABLE yjdb;
2:将数据编码格式保存为ansi(即GBK或GB2312)
设置默认编码为gbk:
set names gbk;
设置数据库db_name默认编码为gbk:
- ALTER DATABASE `db_name` DEFAULT CHARACTER SET gbk COLLATE gbk_chinese_ci;
设置表tb_name默认编码为gbk:
- ALTER TABLE `tb_name` DEFAULT CHARACTER SET gbk COLLATE gbk_chinese_ci;
导入:
- LOAD DATA LOCAL INFILE 'C:\\gbk.txt' INTO TABLE yjdb;
注:1.UTF8不要导入gbk,gbk不要导入UTF8;
2.dos下不支持UTF8的显示;
二.hibernate的问题
1. hibernate.cfg.xml加上属性.
<property name="connection.useUnicode">true</property>
<property name="connection.characterEncoding">UTF-8</property>
解决hibernate向mysql插入中文乱码问题的更多相关文章
- 解决hibernate向mysql插入中文乱码问题(转)
转载自:http://blog.csdn.net/peditable/article/details/7047573 1.首先需要修改MySQL数据库的配置文件my.ini,此文件放在mysql根目录 ...
- 解决hibernate向mysql插入中文乱码问题(更改MySQL字符集)
1.首先需要修改mysql数据库的配置文件my.ini,此文件放在mysql根目录下.在此文件下查找default-character-set属性,并将其值更改为utf8(注意:不是utf-8,也要注 ...
- Spring boot+Mybatis+MySQL插入中文乱码
转载:https://www.jianshu.com/p/bd0311a33c16 现象: 搭建spring boot+mybatis+mysql时出现插入mysql的中文出现乱码???. mys ...
- hibernate 解决诡异的mysql存入中文乱码
使用hibernate查询mysql,通过bean的get方法拿到字符串再写入mysql中的字段会中文乱码,需要String string = xxx.get(),把get方法拿到的值传入到新的str ...
- 解决Python往MySQL插入中文时报错的问题
今天遇到一个问题,用Python往MySQL插入数据时,若数据中包含中文会报类似下面的错误: ERROR 1366: Incorrect string value: '\xE4\xB8\xAD\xE5 ...
- python mysql插入中文乱码
# "INSERT INTO" 语句sql = "INSERT INTO sites (name, url, status, enable) VALUES (%s, %s ...
- Hibernate向MySQL插入中文数据--乱码解决
<property name="hibernate.connection.url">jdbc:mysql://127.0.0.1:3306/exam?useUnicod ...
- Windows本地解决MySql插入中文乱码问题
JSP页面输入的数据也要转化UTF8的编码字符串在传人数据库 一劳用逸 在 MySQL 的安装目录下有一个 my.ini 配置文件,通过修改这个配置文件可以一劳永逸的解决乱码问题.在这个配置文件中 [ ...
- mac下 mysql 插入中文乱码解决
搞了好几个小时,终于搞定了 乱码根本原因还是编码方式不同造成的,只要编码方式统一就没问题 1. 进入 mysql 命令行, 用 show variables like 'character_set_% ...
随机推荐
- 【转】Dancing Links题集
转自:http://blog.csdn.net/shahdza/article/details/7986037 POJ3740 Easy Finding [精确覆盖基础题]HUST1017 Exact ...
- [设计模式] 16 迭代器模式 Iterator Pattern
在GOF的<设计模式:可复用面向对象软件的基础>一书中对迭代器模式是这样说的:提供一种方法顺序访问一个聚合对象中各个元素,而又不需要暴露该对象的内部表示. 类图和实例: 迭代器模式由以下角 ...
- java Hotspot 内存管理白皮书(中文翻译)
转自: http://my.oschina.net/u/568779/blog/166891 1引言 一个健壮的 Java™2平台,Standard Edition (J2SE™)拥有一个自动内存管理 ...
- C# 面向对象之概念理解(2)
委托 如果对象A为了满足某个请求,而寻求另一个对象B的帮助,这被称作是A对B的委托. 对象间的委托,和现实世界中人与人之间的委托一样:如果你“那位”要求你在他外出公干期间帮忙助剪草坪,而你转而雇佣邻居 ...
- Android 动画的重复播放
如果你要的加载xml方式设置动画,而且在xml定义了好几个动画元素比如:<set> <alpha android:repeatCount="-1" andr ...
- 【转载】SSH框架总结(将网上朋友写的给整合了下)
一.Struts 在没有学习SSH框架前,我们一般采用Jsp+javabean+servlet开发,这里就是MVC架构.而Struts其实就是替代了Servlet,我们知道Servlet在一般的开发中 ...
- 套题T7
P4712 铺瓷砖 时间: 1000ms / 空间: 65536KiB / Java类名: Main 描述
- 转贴: A Simple c# Wrapper for ffMpeg
原帖地址:http://jasonjano.wordpress.com/2010/02/09/a-simple-c-wrapper-for-ffmpeg/ A Simple c# Wrapper fo ...
- Xamarin.Android 入门之:Bind java的jar文件+Android显示gif图片
一.引言 在xamarin开发的时候,有时我们想要做一个功能,但是这个功能已经有人用java写好了,并且打包成了jar文件.那么我们可以直接把对方的jar文件拿过来用而不是重新用c#写代码. 关于bi ...
- mybatis和hibernate区别和应用场景
hibernate:是一个标准ORM框架(对象关系映射).入门门槛较高的,不需要程序写sql,sql语句自动生成了. 对sql语句进行优化.修改比较困难的. 应用场景: 适用与需求变化不多的中小型项目 ...