因为hibernate底层使用的是jdbc的技术,所以我参考了别人使用jdbc保存数据到mysql里面时解决乱码问题的方法!
首先要告诉数据库要插入的字符串的字符集,mysql 默认使用的字符集是 latin1。我要保存的字符串是 UTF-8 编码的(字符集是 Unicode),所以包含这个字段的表应该使用 UTF-8 编码。
这里有几种解决办法。
1、在建立数据库的时候指定数据库的字符集编码,这样,这个数据库的所有表都会默认使用数据库的字符集编码。如 create database foo charset utf8;
2、在建表的时候指定字符集编码。如 create table foo (id char(20)) charset utf8;
3、指定某一列使用的字符集编码。如create table foo (id char(20) charset utf8);
如果你有需要的话还可以指定字符排序的规则,也就是指定 collation,如 create database foo charset utf8 collate utf8_general_ci;
,同样也可以指定单独的表、列使用的 collation 规则。
然后在使用 jdbc 连接数据库的时候要告知 jdbc 使用什么字符集编码来跟服务器通信。很简单,只需要在 jdbc 指定数据库路径时做一点修改就可以了。比如,jdbc:mysql://localhost/test?useUnicode=true&characterEncoding=utf8
。注意如果在 XML 文件里面的话 “&” 要改成 “&”。
完整的写法:jdbc:mysql://localhost/test?useUnicode=true&characterEncoding=UTF-8
在hibernate的配置文件里面修改代码如下:
<property name="connection.url"> jdbc:mysql://127.0.0.1:3306/hello?useUnicode=true&characterEncoding=UTF-8 </property>
如果你使用的是 gbk 编码的话把上面所有提到utf8 的地方改成gbk 应该就可以了,只要服务器和客户端使用的字符集编码统一就可以了。
以下这个是使用 mysql的【命令行】来完成插入的。
mysql 命令行客户端默认使用的字符集也是 latin1,如果你通过这个来插入中文的话也会出现乱码的情况。解决的办法是执行语句 set names 'utf8'
来告诉服务器使用 UTF-8 编码来和客户端通信。你也可以使用 set charset 'utf8'
,它和 set names 区别只在于 collation 上。set names 和 set charset 都相当于执行了三条语句,具体的内容可以去看 mysql 文档 10.4 节。我想这个方法在使用 jdbc 的时候也是可以的,所以如果 jdbc 的指定数据库地址中没有告知使用的字符集编码的话可以通过执行上面的语句来达到相同的效果。
相关推荐
以下是解决hibernate与MySQL存储中文时出现乱码问题的详细步骤和相关知识点: 1. **配置Hibernate连接URL**: 在`hibernate.cfg.xml`配置文件中,需要正确设置连接URL以指定字符集。添加`useUnicode=true`和`...
本文将深入探讨“hibernate+mysql乱码问题”的原因、解决方案以及如何预防这类问题。 首先,我们需要了解乱码问题的根源。在数据库层面,MySQL的编码格式对数据存储和检索至关重要。如果数据库、表或列的字符集不...
### Hibernate与MySQL中文乱码问题解析及解决方案 #### 一、问题概述 在使用Hibernate框架进行Java应用程序开发的过程中,尤其是在连接MySQL数据库时,经常会遇到中文显示乱码的问题。这一问题通常发生在从数据库...
在开发Java Web应用时,特别是涉及到Hibernate与MySQL的整合时,中文字符的存储和显示问题是一个常见的挑战。中文字符乱码通常发生在数据的输入、处理和输出三个环节,需要在多个层面进行配置和调整以确保正确的字符...
在使用Hibernate框架进行数据库操作时,可能会遇到中文乱码的问题。特别是在使用MySQL作为数据库,并且已将数据库编码设置为`utf-8`的情况下,依然出现乱码现象。这不仅影响数据的正确性,也降低了系统的可用性。 #...
### MySQL乱码问题解决方案 在处理数据库操作时,字符集编码问题经常会导致数据展示或存储过程中出现乱码现象。MySQL作为广泛使用的开源关系型数据库管理系统之一,在实际应用中也难免会遇到字符集不匹配导致的数据...
在本篇文章中,我们将深入探讨如何解决Struts + Hibernate + MyEclipse + Tomcat + MySQL环境中出现的乱码问题。该问题通常出现在处理中文字符时,由于编码设置不当导致中文显示为乱码或无法正常读取。为了确保系统...
当Java应用程序中的持久化类包含中文字符串,并通过Hibernate映射到MySQL数据库时,如果数据库的字符集与应用程序使用的字符集不一致,就可能导致乱码现象。通常,Windows系统的默认本地字符集为GBK或GB2312,而...
在使用 SSH 连接 MySQL 数据库时,可能会出现中文乱码问题,这是因为 MySQL 的默认编码方式不是 UTF-8 导致的。解决这个问题需要从多方面入手,包括配置 Hibernate 的连接参数、修改 Spring 里的数据库连接、配置 ...
在开发Java Web应用程序时,经常会遇到编码问题,尤其是在使用Struts、Hibernate、MyEclipse、Tomcat和MySQL等技术栈时。这个问题主要涉及到各种组件之间的编码一致性,以及数据的正确转换。本文将针对这些技术的...
在Java和MySQL交互时,有时会遇到中文乱码问题,这通常是由于编码不一致或配置不当导致的。这里我们将深入探讨如何解决这个问题,主要涉及SSH(Spring、Struts、Hibernate)框架下的设置以及MySQL数据库的相关配置。...
通过以上两种方法之一,可以有效地解决Hibernate在处理中文字符时出现的乱码问题。关键在于确保客户端与服务器端之间传输数据时所使用的字符集保持一致。如果仍然遇到问题,建议检查数据库表的字符集设置、应用程序...
学生管理系统(Struts Hibernate mysql)无乱码问题。内附数据库文件,直接导入即可用。lib分成两个包lib1,lib2单独下载.把两个包一起搞到lib下即可。 这个是lib1包。你还要下载 学生管理系统(Struts Hibernate ...
在保存或查询数据时,Hibernate会处理对象的序列化和反序列化,这同样涉及到编码问题。正确配置Hibernate的配置文件(如`hibernate.cfg.xml`),指定连接URL的字符集,可以确保数据在持久化过程中的编码一致性。 ...
在MySQL、JSP和SSH框架集成的网站开发过程中,中文乱码问题是一个常见的困扰。解决这个问题的关键在于确保整个系统从数据存储、页面显示到数据传输的编码一致性。以下是一个详细的解决方案: 1. **MySQL编码配置**...
通过上述步骤,可以有效地解决Hibernate在插入数据到MySQL数据库时出现的中文乱码问题。值得注意的是,字符集的配置需要在整个应用链路中保持一致,包括数据库、连接池、Hibernate框架以及前端页面。此外,还可以...
在进行MySQL、JSP以及SSH(Struts、Spring、Hibernate)框架集成的网站开发时,中文乱码问题是一个常见的困扰。这通常是由于编码格式不一致、设置不当或处理方式错误导致的。以下是一些关键的知识点,可以帮助你解决...
在Java Web开发中,我们经常会遇到各种乱码问题,特别是在使用Hibernate、Struts和Spring等框架时。这些框架处理数据的方式以及与数据库交互的过程都可能导致字符编码不一致,从而引发乱码现象。以下是对这些技术全...
总结来说,SSH框架的集成涉及到数据库连接、Hibernate配置、Spring容器设置、Struts2拦截器配置以及处理乱码和连接池问题。通过这些步骤,开发者可以构建一个完整的Java Web应用程序,实现MVC架构,有效地管理数据...