以前在用Struts时遇到过一次,当然用在url之后加characterEncoding=gbk&useUnicode=true的方法搞定了,不过也不知为什么,后来在别人的机器上却出了问题,原因不详。后因隔得太远,远程连接又太慢,不了了之、、
后来在最近的一个项目中,也遇到这个问题,两台机器:同样的系统装着同样版本的软件与driver,可就是有一台机器行,有一台机器不行,郁闷了很久,不过那个项目中,并没有使用hibernate,而是用了最原始的DAO模式的实现方法,自己组装SQL语句,所以在查询前将sql语句转一次码(gbk->iso),然后在将从结果集的中的字符串再转一次码也能(iso->gbk)搞定,这也算是一个笨笨的解决方案了。
可是现在考虑用hibernate来做这一个项目的第二版本,自然也还是遇到了这个中文编码的问题,如果不解决,那要在对bean的设值时做一次转码,在hql的语句中也需要转码,然后得到的bean的属性取值时也要再做一次转码,这样的代码让人心烦(如果用AspectJ来织入部分转码,但是总让人觉得古怪),如果要是这样,我宁可不去用这个hibernate、、、结果在网上关于这个问题的资料并不算多,而且台湾那边讨论的比国内的要多一些,按照相应的方法试过之后,都不行。都让我怀疑,我自己是唯一被这个问题困扰的霉蛋了,差点决定去重编译mysql和去改写JDBC的源码。
不过robbin的一个总结http://forum.iteye.com/viewtopic.php?t=10522&postdays=0&postorder=asc&start=0让我看到了一点希望,然后抱着最后一点希望一点点的用各种方法尝试,终于找到了我自己的一个解决办法。
现在想来其实也算简单,总结如下:
1)将my.ini中的默认字符集latin1改为gbk并[client]之后加入一条default-character-set=gbk,然后关机重启
2)重启之后,打开mysql CC看到以前表中的中文都变成了???之后的乱码。这个是很正常的,因为以前的表中的字符都是使用的ISO8859-1的编码方式,你现在用了GBK编码方式来显示自然是乱码。这时我们需要重建一张表,并使用默认的字符集GBK。我的作法是用它的show create的语句,将其中的字符集改成gbk,并修改表名,来再建一张表,然后写一段JAVA程序将原表中的数据,从ISO编码转到GBK编码之后导入到新表之中,并将原来表drop掉,将新表换成原表的名字。(其实我也不知道,mysql中有没有相应的sql语句或方法能将直接将数据的编码转过去,如果有人知道请告诉我)这时表中内容在mysql CC与query browser中显示的就是正常的中文了。
3)然后、、没有然后了,你现在就可以在程序中用正常的方式来使用中文了,我用JDBC与hibernate测试都通过了,就象再也没有转码这个问题存在了一样,而且也连带着解决了ISO编码中文排序的问题。只是在命令行的环境下GBK编码的中文显示的是乱码。这个是XP命令行方式用的是ISO编码的问题(至于怎样的修改,我也不知道,如果有人知道请告诉我)
这次尝试给我的经验是,最好一开始建库时就用GBK编码,然后在里面加入的数据就会是GBK的编码,这样也就不会遇到我所遇到的一切麻烦了。
最后还是引用robbin的总结吧,现在看来他真是讲得太好了,只是在我没有解决这个问题之前,觉得讲得不足够详细:P
因此,使用什么数据库版本,不管是3.x,还是4.0.x还是4.1.x,其实对我们来说不重要,重要的有二:
1) 正确的设定数据库编码,MySQL4.0以下版本的字符集总是默认ISO8859-1,MySQL4.1在安装的时候会让你选择。如果你准备使用UTF- 8,那么在创建数据库的时候就要指定好UTF-8(创建好以后也可以改,4.1以上版本还可以单独指定表的字符集)
2) 使用3.0.16以上版本的JDBC Driver,那么你就不需要再写什么characterEncoding=UTF-8
分享到:
相关推荐
通过以上步骤,可以有效解决Java Web开发中遇到的MySQL中文编码问题,确保应用程序能够正确地处理中文数据。 #### 五、总结 正确设置MySQL的字符集对于处理中文数据至关重要。通过修改配置文件、设置连接参数以及...
解决MySQL中文乱码问题通常涉及以下几个步骤: 1. **更改MySQL Server配置**: 在MySQL的配置文件`my.ini`中,找到`[mysql]`和`[mysqld]`两个段落,分别设置`default-character-set`为GBK和UTF-8。这样确保客户端...
MySQL 中文乱码问题解决方法 MySQL 是一个功能强大且广泛应用的关系型数据库管理系统,但是,在使用 MySQL 时,用户经常会遇到中文乱码问题。今天,我们将讨论在 MySQL 中的中文乱码问题,并提供解决方法。 MySQL...
通过以上步骤,可以有效地解决MySQL数据库插入中文数据时的编码问题。确保在每个环节都保持编码的一致性,是防止乱码的关键。在实际应用中,建议尽可能使用UTF-8作为统一的编码标准,因为它支持更多的字符集,更有利...
总的来说,解决C#操作MySQL中文乱码问题的关键在于保持从数据库配置到代码再到文件的整个过程中的编码一致性,使用UTF-8编码,并确保在每个环节都正确地指定和处理。通过以上步骤,你应该能够成功地避免中文乱码问题...
这篇文章将详细介绍如何解决Mysql数据库乱码问题,彻底解决JAVA项目中的中文乱码问题。 一、服务器编码设置 在安装Mysql时,选择合适的字符集非常重要。如果选择不当,将会导致中文乱码问题。常见的字符集包括gbk...
MySQL数据库系统中文乱码问题及解决方案 MySQL数据库系统中文乱码问题是指在使用MySQL数据库系统时,中文字符在存储、传输和显示过程中出现乱码的问题。这种问题的出现是由于字符集和编码方式的不兼容所致。 在...
解决MySQL连接时中文显示乱码的问题,关键在于确保数据库、连接参数以及应用程序内部各环节的字符集设置保持一致,并采用适合中文字符的编码方式,如UTF-8。通过上述步骤,可以有效避免中文乱码现象,保证数据的正确...
本文将详细介绍如何解决macOS系统下MySQL中文乱码的问题,通过修改配置文件my.cnf来调整MySQL的字符集,确保中文能够正常显示。 ### 解决方案详解 #### 步骤一:定位my.cnf配置文件 首先,需要找到或创建MySQL的...
总结来说,解决MySQL与JDBC中文问题的关键在于确保数据库、应用程序和JDBC驱动之间的编码一致性。通过调整JDBC连接URL参数或者修改MySQL服务器配置,可以有效地避免中文乱码问题。同时,选择兼容性好且更新的驱动...
在开发Web应用时,尤其是使用Java技术栈如JSP、Servlet与MySQL数据库交互时,中文乱码问题常常困扰着开发者。这个问题的出现主要是由于字符编码不一致导致的,包括数据库编码、连接编码、页面编码等多个环节。下面...
Java 中 MySQL 中文乱码问题解决方案 Java 中 MySQL 中文乱码问题是数据库开发中常见的问题之一,解决这个问题需要对数据库、JSP 和 Tomcat 进行相应的设置。下面我们将详细介绍解决该问题的方案。 数据库编码修改...
Ubuntu MySQL 中文乱码问题解决方案 在 Ubuntu 系统中,MySQL 数据库中文乱码问题是一个常见的问题。乱码问题可能是由于 MySQL 数据库的字符编码设置不正确所致。解决这个问题需要对 MySQL 数据库的字符编码进行...
本文将深入探讨如何从根本上解决MySQL中文乱码问题,并提供一系列实用步骤和建议。 #### MySQL中文乱码的根本原因及解决方案 ##### 1. MySQL服务端默认字符集设置 - **问题描述**:如果MySQL服务端的默认字符集...
### MySQL 插入中文乱码问题详解与解决方案 #### 一、问题背景及原因分析 在使用 MySQL 数据库处理中文数据时,经常会遇到一个让人头疼的问题——中文乱码。中文乱码不仅影响用户体验,还可能导致数据丢失或者错误...
亲测可以解决mysql使用过程中的中文乱码问题,对于新手开说非常有用,分享给大家
总的来说,修改MySQL的编码方式是解决中文字符支持的关键步骤,尤其是在开发多语言应用或者处理中文数据时。正确配置字符集不仅可以避免乱码,还有助于保证数据的完整性和一致性。通过遵循上述步骤,用户应该能够...
### Java插入MySQL中文乱码解决 #### 一、问题背景 在使用Java应用程序与MySQL数据库交互的过程中,常常会遇到一个令人头疼的问题:中文字符在存储到数据库时出现乱码现象。这种现象通常发生在使用JDBC(Java ...
总之,解决MySQL中的汉字乱码问题需要从多个层面进行检查和调整,确保字符集在整个数据处理链路中的一致性。理解字符集和编码的概念,以及它们在MySQL中的应用,对于避免和解决这类问题至关重要。