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: ...
随机推荐
- js取整数、取余数的方法
1.丢弃小数部分,保留整数部分 parseInt(5/2) 2.向上取整,有小数就整数部分加1 Math.ceil(5/2) 3,四舍五入. Math.round(5/2) 4,向下取整 Math.f ...
- linux 内核开发基础
开发特点 不需要第三方库支持 使用GNU C 没有内存保护机制 杜绝浮点数 栈区固定 必须关注并发及同步 注意可移植性
- Android Studio导入GitHub
方法一:引用开源项目的compile添加到gradle中http://www.zhihu.com/question/27027667 方法二:下载安装包引入:http://blog.csdn.net/ ...
- python核心编程-第三章-习题
1.这是python的语言特性,python先创建对象,在给变量赋值时,不需要定义变量的名称和类型,它实际是用变量引用对象.变量类型在给变量赋值时自动声明 2.原因类似变量无须声明类型 3.pytho ...
- Android网络编程之Http通信
Android中提供的HttpURLConnection和HttpClient接口可以用来开发HTTP程序.以下是本人在学习中的总结与归纳.1. HttpURLConnection接口 首先需要 ...
- ca 证书、签名
1.我现在没有个人CA证书,使用.中信建投网上交易,是如何保障安全的呢? 如果您目前没有个人CA证书,使用.中信建投网上交易,系统其实也是用CA证书的RSA体系进行加密的. 您在输入账户和密码进行登录 ...
- 必学100个常用linux命令大全
1,echo “aa” > test.txt 和 echo “bb” >> test.txt //>将原文件清空,并且内容写入到文件中,>>将内容放到文件的尾部 2 ...
- 深入剖析MFC中对于Windows消息处理、运行机制
序: 本人对Windows系统.MFC谈不上有深入的了解,但对MFC本身包装API的机制很有兴趣,特别是读了候老师的<深入浅出MFC>后,感觉到VISUAL C++的Application ...
- JIRA官方:JIRA报表与分析
访问重要的问题 JIRA系统内置的过滤器可以使你快速访问最重要的问题.通过保存和收藏自定义的过滤器,你可以随时了解项目和团队的优先级. 保持团队同步 创建一个过滤器,可以保存你的任何搜索条件.通过分享 ...
- 【POJ 3669 Meteor Shower】简单BFS
流星雨撞击地球(平面直角坐标第一象限),问到达安全地带的最少时间. 对于每颗流星雨i,在ti时刻撞击(xi,yi)点,同时导致(xi,yi)和上下左右相邻的点在ti以后的时刻(包括t)不能再经过(被封 ...