传智播客学习之Mysql乱码问题

来源:互联网 发布:p2p搜索软件 编辑:程序博客网 时间:2024/06/06 02:06

到目前为止,已经学习了接近13个小时了,不知是因为晚上屋内暖气上升的缘故,还是做了太久,站起来的那一刻,突然感觉一阵眩晕,今天第一次感觉学习原来真的还是一件比较累人的事情,在这点闲暇时间,和大家分享我今天的一些学习心得吧,今天主要是用struts+JSP+Mysql做了一个小小的项目,下面就和大家分享一下如何解决JSP页面数据插入数据库乱码的问题。

今天在做项目的时候,好不容易把代码写完,当程序发布后,从客户端页面查询数据库内容发现怎么都有错,仔细分析,发现sql语句中中文根本无法出来,后来第一反应,就用了过滤器,问题解决了,但是我本人总是不太喜欢过滤器这个东西,加之只有几个字段,觉得应该还有更好一些的办法,于是开始在网上进行了大量的搜索行动,功夫不负有心人,终于让我有了一点小小收获。

数据库中关于字符集的种类有很多,对编程有影响的主要是客户端字符集和数据库字符集,而数据库中常用的操作主要是保存数据和读取数据,我们只要保证写入时选择的字符集和读取时选择的字符集一致,即只需保证两次操作的客户端字符集一致即可。方法主要有以下几个方面。

一、修改客户段的字符集,这里主要有两种方式,一种是通过页面,其次可以通过字符串的getBytes方法设定,这里我就不再重复,因为在之前有一篇有关中文乱码的博客已经写得比较详尽了,感兴趣的朋友可以去哪里参看。

1.通过页面

<%@ page language="java" pageEncoding="utf-8" contentType="text/html;charset=utf-8"%>

2.通过编码

public void reset(ActionMapping mapping, HttpServletRequest request){

try {

   request.setCharacterEncoding("utf-8");

  } catch (UnsupportedEncodingException e) {

     e.printStackTrace();

  }

二、修改数据库(mydql)的字符编码

1.通过在获取数据库连接的时候,通过url参数来设定,如下:

jdbc:mysql://localhost:3306/db_name"?useUnicode=true&characterEncoding=utf-8

2.通过启动配置文件

打开MySQL的启动配置文件,(windows环境的叫my.ini文件,在安装目录)

然后打开配置文件,在[mysql]段加入一下代码 default-character-set=utf-8

然后打开配置文件,在[client]段加入一下代码 default-character-set=utf-8

设置后重新启动MySQL服务。

再打开 WinMysqlAdmin管理器,选择Variables项,查看一下变量的值是否如下

  character_set_server  =utf-8

  character_set_system  =utf-8

  character_set_database  =utf-8

  character_set_client  = utf-8

  character_set_connection  = utf-8

  character_set_results = utf-8

  collation_connection = utf-8_general_ci

  collation_database = utf-8_general_ci

  collation_server =utf-8_general_ci

3.创建表的时候制定字符编码set names utf-8

4.修改表和字段的字符集
4.1 修改数据库  mysql> alter database name character set utf8;
4.2 修改表 alter table 表名 convert to character set gbk;
4.3 修改字段
alter table 表名 modify column '字段名' varchar(30) character set gbk not null; 5.使用过滤器

原创粉丝点击