关于网上解决乱码的问题有许多也很成熟了,将mysql和他的可视化工具Navicat之间统一编码问题也有许多,本篇文章旨在回顾mysql与Navicat之间的统一编码的所有方式,和web应用中传输中文乱码做统一规划,由于本人水有限,文中有不少错误的地方望批评改正。
大家都知道,之所以乱码是因为编码和解码不统一所造成的,当然,我们所熟知的编码格式中UTF-8,想必非常熟悉,UTF-8是国际编码,能解析所有字符,故一般网站采用UTF-8编码。
mysql方面编码问题统一UTF-8解决方案:
修改mysql安装目录下my.ini文件:
打开mysql默认安装路径下的my.ini文件,
设置 default-character-set=utf8 ,当然,需要你在建数据库之前和建表之前设置,
然后,设置数据库xxxx的编码格式:
ALTER
DATABASE
`xxx`
DEFAULT
CHARACTER
SET
utf8
COLLATE
utf8_general_ci;
然后,设置xxx表的编码格式为utf-8:
ALTER
TABLE
`testTable`
DEFAULT
CHARACTER
SET
utf8
COLLATE
utf8_general_ci;
好了,然后查看数据库编码格式:
show
create
database
xxx; 为utf-8则说明编码设置完成了
好了,然后查看数据库表的编码格式:
show
create
table
testTable;
设置完成!MySql统一了utf-8编码.
Navicat工具设置编码解决方案:
很简单,打开工具,新建连接,打开高级选项,设置如界面所示:
编码设置自动就可以, 当然 ,也可以在该工具设置数据库和表编码格式,很简单不做介绍了,右键表对象 信息就可设置。
Web应用中设置编码解决方案:
上述步骤设置完成后,我们做一个jsp界面用于过去mysql中的数据,并将表的数据呈现出来,设置可以编辑,和添加操作,
当然,还要设置编码格式:
然后,在java中获取连接时指定utf-8编码:
// 获取数据库连接。 三个参数分别为 连接URL,用户名,密码
conn = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/databaseWeb?charracterEncoding=UTF-8",
"root",
"root");
指定charracterEncoding=UTF-8,
然后,设置request和response编码统一,当然,推荐设置在filter中:
好了,启动服务器,打开网页:
没问题,然后点击修改保存:
还是没问题,
当然,你通过MySql命令行查看,和通过可视化工具Navicat编辑查看,和网页上读取和设置中文然后读入mysql,都没有出现乱码问题,
至此,乱码问题全部解决。