解决JavaWeb开发中Jsp存储读取MySQL数据中文乱码的问题
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了解决JavaWeb开发中Jsp存储读取MySQL数据中文乱码的问题,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3429字,纯文字阅读大概需要5分钟。
内容图文
![解决JavaWeb开发中Jsp存储读取MySQL数据中文乱码的问题](/upload/InfoBanner/zyjiaocheng/552/0b7dca75036a4a1988bffe1c8d92329d.jpg)
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中添加
<filter-name>EncodingFilter</filter-name>
<filter-class>com.rady.blog.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<filter-mapping>
<filter-name>EncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
最后把Tomcat也干掉,防患于未然,滴水不漏,中文从此不再!
修改Tomcat安装目录/conf/server.xml文件
<Connector port="80" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" URIEncoding="UTF-8"/>
内容总结
以上是互联网集市为您收集整理的解决JavaWeb开发中Jsp存储读取MySQL数据中文乱码的问题全部内容,希望文章能够帮你解决解决JavaWeb开发中Jsp存储读取MySQL数据中文乱码的问题所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。