当前位置:Gxlcms > mysql > 解决JavaWeb开发中Jsp存储读取MySQL数据中文乱码的问题

解决JavaWeb开发中Jsp存储读取MySQL数据中文乱码的问题

时间:2021-07-01 10:21:17 帮助过:20人阅读

MySQL虽说好用,但很容易出现中文乱码的问题,以下列出Java Web开发中常见的几种中文乱码问题:1、JSP页面显示问题2、存入MySQL数

MySQL虽说好用,但很容易出现中文乱码的问题,以下列出Java Web开发中常见的几种中文乱码问题:

1、JSP页面显示问题

2、存入MySQL数据中文乱码

3、读取MySQL数据中文乱码

字符集:字符集定义了它包含哪些字符以及每个字符对应什么数字。
字符编码:在计算机中存储数字,显示时转换为对应的字符,编码方式是指表示字符的数字以什么方式存储。

介个也太唧唧歪歪了,不搞这个研究的可以完全忽视。只要知道UTF-8是为统一世界上所有字符编码的产物就ok了。

解决方法才是王道:

(如果页面使用到CKEditor插件的话,其实中文乱码和这个关系不大)

1、JSP显示中文乱码的问题,一般都是没有设置页面编码,注意添加以下这样一段代码

<%@ page pageEncoding=”UTF-8”%>

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

"pageEncoding"指定了当前jsp文件存储使用的编码方式,“contentType”用来指定响应头消息中的"Content-Type"

当服务端的响应头消息中没有指定charset时,客户端会依据上面代码中的charset指定的编码方式解码页面

并且JSP都以UTF-8的编码方式保存,把所有可能出现的问题通通抹杀。 如果你使用Myeclipse,可以设置Myeclipse的默认参数,使Myeclipse新建JSP文件时,可以自动是用UTF-8的编码方式。方法:Windows-Preference-Myeclipse-File and Editor-JSP-Encoding,选择ISO 10646/Unicode(UTF-8)

2、存储数据,MySQL表的编码设定,最好指定相应的编码格式。字符集选择utf8,校对utf8_unicode_ci。

安装MySQL时,会提示使用什么样的默认编码,当然也可以自己设定

修改 my.ini(MySQ安装目录下的文件)

# CLIENT SECTION
[client]
port=3306
[mysql]
default-character-set=utf8

# The default character set that will be used when a new schema or table is
# created and no character set is defined
default-character-set=utf8

修改完毕后,务必记得重启MySQL!!!修改这个文件,是我设置了CharacterEncoding、指定了页面编码、并且使用了过滤器依旧无法解决问题,几近崩溃的时候,最后的救命稻草!

3、读取数据时,,在Servlet中添加request.setCharacterEncoding("UTF-8");可以很好地解决从JSP页面接受中文参数乱码

4、使用过滤器,如果在MySQL默认编码格式为UTF-8的情况下,只使用过滤器,便可以解决一切问题,无论你有没有设置那些繁杂的编码。

在包中建一个class:CharacterEncodingFilter

package com.rady.blog;

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

public class CharacterEncodingFilter implements Filter {
private FilterConfig config;
private String encoding = "UTF-8";

public void destroy() {
config = null;
}

@Override
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
request.setCharacterEncoding(encoding);
chain.doFilter(request, response);
}

public void init(FilterConfig config) throws ServletException {
this.config = config;
String s = config.getInitParameter("encoding");
if (s != null) {
encoding = s;
}
}
}

在web.xml中添加

EncodingFilter
com.rady.blog.CharacterEncodingFilter

encoding
UTF-8



EncodingFilter
/*

最后把Tomcat也干掉,防患于未然,滴水不漏,中文从此不再!

修改Tomcat安装目录/conf/server.xml文件

connectionTimeout="20000"
redirectPort="8443" URIEncoding="UTF-8"/>

人气教程排行