2018-05-21Java Web中文乱码问题

在JSP-->Servlet-->DAO-->MySQL设计的过程中,中文乱码的问题时常出现。最常出问题的地方在MySQL中。其次还有网页编码的问题,request请求解析的编码问题。

  1. MySQL

MySQL默认的编码格式为latin1,而不是常用的utf8,查看MySQL的编码格式只需执行show variables like '%char%'
可以看到database和server默认的编码为latin1。如果想永久的更改编码为utf8,则需要更改MySQL的配置文件/etc/my.cnf

2018-05-21Java Web中文乱码问题_第1张图片
MySQL默认设置

在linux系统中/etc/my.cnf文件默认不存在,但my.cnf存在于/etc/mysql/my.cnf

  cd /etc/mysql
  sudo vim my.cnf
//添加
[mysqld]
character-set-server=utf8
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8                                

保存文件后,cp my.cnf /etc,复制到etc目录下,重启mysql: service mysql restart

重新进入mysql,show variables like %char%,会发现编码已经全都变为utf8。(此编码只对以后创建的数据库有用,更改之前的数据库的编码未变)

2018-05-21Java Web中文乱码问题_第2张图片
更改格式之后

  1. JSP页面设置

JSP页面中使用page命令设置网页的编码格式为utf8:<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

3.Request请求

我们在使用request.getParameter()方法获取属性时,request默认使用的是"ISO-8859-1"编码,为了统一编码,应在request.getParameter()方法之前设置使用utf8来解析:request.setCharacterEncoding("UTF-8");

你可能感兴趣的:(2018-05-21Java Web中文乱码问题)