今天在写项目时碰到了mysql数据库数据乱码的问题,也从网上查了很多方法,前后折腾了两个小时才终于调整好。现在就把调整过程中碰到的一些问题记录下来:

1.项目是SSH架构,一开始我以为是调用hibernate的save方法出现的问题,于是更改了applicationContext.xml中对hibernate的配置,在

<property name="hibernateProperties"></property>中添加了下面两条属性:

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

但是经过测试,发现mysql中显示中文的字段依旧是一连串的问号。于是开始着手查找数据库自身的编码问题。

2.按照网上说的,首先修改mysql的配置文件my.ini。

在client中修改如下字段:default-character-set = utf8

在mysqld中修改如下字段:

character-set-server = utf8
collation-server = utf8_general_ci

在mysql中修改如下字段:default-character-set = utf8

如果配置文件没有上述字段,自行添加即可。修改完成后发现情况依旧没有改观。于是只好看是查看数据库和数据库表的属性。

3.打开命令行,首先输入show variables查看下面几个字段:

character_set_client

character_set_connection

character_set_database

character_set_server

collation_connection

collation_database

collation_server

是不是都变成了utf8。一般情况下修改了配置文件之后,上面几个字段都是没问题的。如果有问题,可以使用如下命令:set @@character_set_xxx = utf8解决。

当然也可以输入status属性查看,情况都差不多的。

4.上面的属性既然没错,那么只好手动修改数据库和数据库表的属性了。

 alter database db_name character set utf8

 alter table table_name character set utf8

改好之后,再次尝试inset中文,发现依然是一串问号。这个时候已经基本无奈了,没办法,只好自己重新建了一个test数据库和test数据库表,并在建数据库和建表时设置了默认编码:

 create database test character set utf8;
use test;
create table test(id int primary key, name varchar(20) not null) default charset=utf8;

这时,向测试代码插入数据竟然成功了。所以至此我才发现,之前所有的改动基本是正确的,只有对数据库和数据库表的修改不知为什么没有成功,还有待对mysql的深入研究吧。

最后,把数据库和数据库表全部drop掉,再重新建一遍,中文乱码的问题得到解决。从hibernate向数据库插数据也没问题了。

5.命令行显示中文可能会有些问题,因为windows命令行默认的是gbk编码(可以右键->属性查看到),所以我们还需要set names gbk来解决。但是,你如果用图形界面观察数据库中的数据,是没有问题的。

6.如果到最后实在找不到解决办法:重装。但是,要是你根本没有尝试过一些解决方案就急不可耐的重装数据库,只能说作为一个工程师你还欠缺的太多。因为我们需要的是一种培养自己动手解决问题的能力。实话说,重装是最笨的解决办法了。

所以,对网上那些动不动就喊着”重装一遍不就好了“的人嗤之以鼻,因为你根本不是在指导别人解决问题。

mysql5 乱码问题解决方案的更多相关文章

  1. AntiXSS v4.0中Sanitizer.GetSafeHtmlFragment等方法将部分汉字编码为乱码的解决方案

    AntiXSS v4.0中Sanitizer.GetSafeHtmlFragment等方法将部分汉字编码为乱码的解决方案 以下代码为asp.net环境下,c#语言编写的解决方案.数据用Dictiona ...

  2. c#抓取网页内容乱码的解决方案

    写过爬虫的同学都知道,这是个很常见的问题了,一般处理思路是: 使用HttpWebRequest发送请求,HttpWebResponse来接收,判断HttpWebResponse中”Content-Ty ...

  3. idea中的汉语注释出现乱码的解决方案

    日记 - idea中的汉语注释出现乱码的解决方案 我是个idea的忠实用户,新公司的项目都是用eclipse做的,通过svn拉下代码后发现,注释的内容里,中文内容都是乱码.问过项目负责人,说可能是GB ...

  4. Get请求,Post请求乱码问题解决方案

    下面以两种常见的请求方式为例讲解乱码问题的解决方法. 1.Post方式请求乱码. 自从Tomcat5.x以来,Get方式和Post方式提交的请求,tomcat会采用不同的方式来处理编码. 对于Post ...

  5. PHP使用UTF8编码读取ACCESS的乱码问题解决方案(转)

    PHP使用UTF8编码读取ACCESS的乱码问题解决方案 http://it.xwstudy.com/readnews.php?id=627 来源:本站编辑 发布日期:2013-05-27 已有 17 ...

  6. 在Win7系统下, 使用VS2015 打开带有日文注释程序出现乱码的解决方案

    在Win7系统下, 使用VS2015 打开带有日文注释程序出现乱码的解决方案 下载: apploc.msi (下载地址:http://microsoft-applocale.software.info ...

  7. [转]URL传中文参数导致乱码的解决方案之encodeURI

    通过URL传中文参数时,在服务端后台获取到的值往往会出现乱码.解决方案有很多种.本文介绍如何通过encodeURI来解决中文乱码问题. 首先,在前端页面准备参数的时候,需要对中文参数进行encode处 ...

  8. java 乱码问题解决方案

    java  乱码问题解决方案 一.tomcat: <Connector         port="8080"         maxThreads="150&qu ...

  9. mysql中Incorrect string value乱码问题解决方案

    mysql中Incorrect string value乱码问题解决方案   你是否遇到过类似以下错误? java.sql.SQLException: Incorrect string value: ...

随机推荐

  1. Hibernate 关联关系映射实例

    双向多对一/一对多(many-to-one/one-to-many) 例子,多个学生对应一个班级,一个班级对应多个学生: 班级类,Grade.java: public class Grade { pr ...

  2. java服务器简单实现

    一 HTTP http请求 一般一个http请求包括以下三个部分: 1 请求方法,如get,post 2 请求头 3 实体 一个http请求的实例如下:GET /index.jsp HTTP/1.1H ...

  3. oracle 集合定义

    集合:是具有相同定义的元素的聚合.Oracle有两种类型的集合: 可变长数组(VARRAY):可以有任意数量的元素,但必须预先定义限制值. 嵌套表:视为表中之表,可以有任意数量的元素,不需要预先定义限 ...

  4. 怎么在centos中查看某个目录的树结构?

    1.在ubuntu系统中默认是没有tree这个命令的,需要安装,用下面的命令就可以安装tree这个命令工具sudo apt-get install tree. 在centos中也没有,需要提前进行安装 ...

  5. Yii 多表关联relations,需要与with()方法联合使用

    1,首先多表关联是在models/xx.php的relations里配置的.而且是互配,但有区别. 格式: 'VarName'=>array('RelationType', 'ClassName ...

  6. Python之路第八天,进阶-设计模式

    设计模式 单例模式 单例,顾名思义单个实例. 学习单例之前,首先来回顾下面向对象的内容: python的面向对象由两个非常重要的两个"东西"组成:类.实例 面向对象场景一: 如:创 ...

  7. 验证角谷猜想(hd1279)

    验证角谷猜想 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Subm ...

  8. C++类继承中的构造函数和析构函数 调用顺序

    思想: 在C++的类继承中,构造函数不能被继承(C11中可以被继承,但仅仅是写起来方便,不是真正的继承) 建立对象时,首先调用基类的构造函数,然后在调用下一个派生类的构造函数,依次类推: 析构对象时, ...

  9. 【MYSQL 清空所有的的表中的数据的SQL的生成】

    MYSQL 清空所有的的表中的数据的SQL的生成 select Concat('TRUNCATE TABLE ', TABLE_NAME, ';') from INFORMATION_SCHEMA.T ...

  10. 切图教程,PS和AI切图方法分享