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: ...
随机推荐
- Hadoop: HDFS 格式化时,出现 “ERROR namenode.NameNode: java.io.IOException: Cannot create directory /usr/hadoop/tmp/dfs/name/current”
原因是 没有设置 /usr/hadoop/tmp 的权限没有设置, 将之改为: chown –R hadoop:hadoop /usr/hadoop/tmp 查看:
- java学习——数组
元素类型[] 数组名 = new 元素类型[元素个数或数组长度]; array 为引用数据类型|-数组数据类型 | 内存结构:程序在运行时,需要在内存中的分配空间.为了提高运行的效率,有对空间进行不同 ...
- PHP学习笔记十一【数组】
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/h ...
- mysql用root用户启动后其他用户无法启动不问题
问题描述:用root账户启动mysql后,在用mysql用户或其他非root账户启动不了mysql问题解决:通过看mysql的err日志,发现 Failed to open log (robert-b ...
- My97DatePicker使用的问题
我在iframe中使用My97DatePicker时,发现第一次点击左边的菜单时,在右边的页面可以弹出日期框: 当我第二次点击菜单时,右边的日期文本框却弹出了页面的内容,而不是日期选择框: 首先怀疑是 ...
- media type 与 media query
参考博客:http://www.qianduan.net/media-type-and-media-query.html media type(媒体类型)是css 2中的一个非常有用的属性,通过med ...
- Linux Power(一): kernel/power/earlysuspend.c
/* kernel/power/earlysuspend.c * * Copyright (C) 2005-2008 Google, Inc. * * This software is license ...
- XML新手入门 创建构造良好的XML(2)
本文描述了构建良好的XML需要遵循的规则.作者详细介绍了构建XML需要考虑的元素,如何命名约定.正确的标记嵌套.属性规则.声明和实体,以及DTD和schema的验证,十分便于新手开始学习了解XML. ...
- SQL 必备- ORACLE-SQSLSERVER-DB2时间函数及常见函数总结
SQLSERVER 篇: 一.时间函数 --getdate 获取当前时间 select getdate() --dateadd 原有时间加: 2013-02-17 13:20:16 此时间加12个月 ...
- 山寨QQ音乐的布局(二)终于把IOS6的UITableView拍扁了
IOS应用开发中UITableView的应用十分广泛,但是IOS7神一样的把UITableView拍扁了,这样一来IOS6的UITableView不干了,就吵着也要被拍扁,那好吧我今天就成全了你... ...