mysql5 乱码问题解决方案
今天在写项目时碰到了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 乱码问题解决方案的更多相关文章
- AntiXSS v4.0中Sanitizer.GetSafeHtmlFragment等方法将部分汉字编码为乱码的解决方案
AntiXSS v4.0中Sanitizer.GetSafeHtmlFragment等方法将部分汉字编码为乱码的解决方案 以下代码为asp.net环境下,c#语言编写的解决方案.数据用Dictiona ...
- c#抓取网页内容乱码的解决方案
写过爬虫的同学都知道,这是个很常见的问题了,一般处理思路是: 使用HttpWebRequest发送请求,HttpWebResponse来接收,判断HttpWebResponse中”Content-Ty ...
- idea中的汉语注释出现乱码的解决方案
日记 - idea中的汉语注释出现乱码的解决方案 我是个idea的忠实用户,新公司的项目都是用eclipse做的,通过svn拉下代码后发现,注释的内容里,中文内容都是乱码.问过项目负责人,说可能是GB ...
- Get请求,Post请求乱码问题解决方案
下面以两种常见的请求方式为例讲解乱码问题的解决方法. 1.Post方式请求乱码. 自从Tomcat5.x以来,Get方式和Post方式提交的请求,tomcat会采用不同的方式来处理编码. 对于Post ...
- PHP使用UTF8编码读取ACCESS的乱码问题解决方案(转)
PHP使用UTF8编码读取ACCESS的乱码问题解决方案 http://it.xwstudy.com/readnews.php?id=627 来源:本站编辑 发布日期:2013-05-27 已有 17 ...
- 在Win7系统下, 使用VS2015 打开带有日文注释程序出现乱码的解决方案
在Win7系统下, 使用VS2015 打开带有日文注释程序出现乱码的解决方案 下载: apploc.msi (下载地址:http://microsoft-applocale.software.info ...
- [转]URL传中文参数导致乱码的解决方案之encodeURI
通过URL传中文参数时,在服务端后台获取到的值往往会出现乱码.解决方案有很多种.本文介绍如何通过encodeURI来解决中文乱码问题. 首先,在前端页面准备参数的时候,需要对中文参数进行encode处 ...
- java 乱码问题解决方案
java 乱码问题解决方案 一.tomcat: <Connector port="8080" maxThreads="150&qu ...
- mysql中Incorrect string value乱码问题解决方案
mysql中Incorrect string value乱码问题解决方案 你是否遇到过类似以下错误? java.sql.SQLException: Incorrect string value: ...
随机推荐
- 查看DB文件的空间使用情况
可以使用如下语句获得DB文件的空间使用 use dbName SELECT DB_NAME() AS DbName, name AS FileName, size/128.0 AS CurrentSi ...
- c#之process类相关整理
一.根据进程名获取进程的用户名? 需要添加对 System.Management.dll 的引用 using System.Diagnostics; using System.Manageme ...
- crontab指令详解
引用:http://www.cnblogs.com/xiaoluo501395377/archive/2013/04/06/3002602.html 具体指令请参考文章:linux指令. 详细版推荐原 ...
- php非递归无限级分类.
项目需要.递归无限级分类效率实在太低.理了半天思路写的. 分类越多效率越高. /** * 单次循环返回无限极分类嵌套 * @param array $data 操作的数组 * @param strin ...
- javascript 小计
①if文 if(){} else if(){} else if 中间有空格 ②
- PHP性能优化之:配置opcache
启用opcache,并对配置参数进行优化 [opcache] zend_extension = /usr/local/php5/lib/php/extensions/no-debug-zts-2012 ...
- 计算球体积,hdu-2002
计算球体积 Problem Description 根据输入的半径值,计算球的体积. Input 输入数据有多组,每组占一行,每行包括一个实数,表示球的半径. Output 输出对应的球的体积 ...
- C语言学习second--C语言基础学习
1.标准C语言 C语言诞生于20世纪70年代,年龄比我们自己还要大,期间产生了很多标准,但是各种编译器对标准的支持不尽相同. ANSI C是使用的最广泛的一个标准,也是第一个正式标准,被称为“标准C语 ...
- MySQL 指定数据库字符集的 3 种方法。
方法 1.创建数据库时指定字符集. create database Studio character set utf8; 方法 2.创建表的时候针对列指定字符集. create table T( x ...
- EasyUI 使用心得
最近项目中用到EasyUI,总结了一下 注:EasyUI中所有的控件不能重名,否则会出现意向不到的后果.这是EasyUI框架决定的. ① EasyUI 获取文本框中的值 //日期 $('#beginD ...