JSP+MySQL+Tomcat+Apache乱码解决
乱码问题已历来已久,在开源环境下,乱码问题更是令程序员措手不及。本人在Unix(Freebsd)下的一次乱码经历可谓经典,故撰以此文以滋效尤!
我将本次所遇乱码归为三类:
1.页面字符乱码
2.记录显示乱码
3.request传递乱码
以下将对上述三类乱码进行解析:
一.页面字符乱码:
1.大小写不一致:
org.apache.jasper.JasperException: /top.jsp(1,1) Page directive: illegal to have multiple occurrences of contentType with different values (old: text/html;charset=gb2312, new: text/html;charset=GB2312)
2.间隔不一致:
org.apache.jasper.JasperException: /top.jsp(1,1) Page directive: illegal to have multiple occurrences of contentType with different values (old: text/html; charset=GB2312, new: text/html;charset=GB2312)
*解决方案:
首先,在Apache中增加AddDefaultCharset GB2312或AddDefaultCharset GBK
其次,统一使用页面编码定义,如:,OK,果然是乱。那么,现在有两种解决方法。
*解决方案:
1.加上这条语句:request.setCharacterEncoding("gbk");
在一/两页上可行,但此法也非权益之计。
2.注册SetCharacterEncodingFilter类:
首先,编写SetCharacterEncodingFilter.java文件,代码如下:
package cn.com.jsp;
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;
import javax.servlet.UnavailableException;
public class SetCharacterEncodingFilter implements Filter {
protected String encoding = null;
protected FilterConfig filterConfig = null;
protected boolean ignore = true;
public void destroy() {
this.encoding = null;
this.filterConfig = null;
}
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException,
ServletException {
// Conditionally select and set the character encoding to be used
if (ignore || (request.getCharacterEncoding() == null)) {
String encoding = selectEncoding(request);
if (encoding != null) {
request.setCharacterEncoding(encoding);
}
}
// Pass control on to the next filter
chain.doFilter(request, response);
}
public void init(FilterConfig filterConfig) throws ServletException {
this.filterConfig = filterConfig;
this.encoding = filterConfig.getInitParameter("encoding");
String value = filterConfig.getInitParameter("ignore");
if (value == null) {
this.ignore = true;
} else if (value.equalsIgnoreCase("true")) {
this.ignore = true;
} else if (value.equalsIgnoreCase("yes")) {
this.ignore = true;
} else {
this.ignore = false;
}
}
protected String selectEncoding(ServletRequest request) {
return (this.encoding);
}
}
此文件为request过滤类,在全局编译前需进行注册。
注册文件为:<!--wroo-->/WEB-INF/web.xml。
在此文件中加入如下代码即可:
wwwroot
MySQL Test App
setCharacterEncodingFilter
setCharacterEncodingFilter
setCharacterEncodingFilter
cn.com.jsp.SetCharacterEncodingFilter
encoding
GBK
setCharacterEncodingFilter
/*
……
OK,现在可以编译你的SetCharacterEncodingFilter.java文件啦!
至此,乱码将与你格格不入!
分享到:
相关推荐
在部署WebLogic Server 10版本于UNIX操作系统时,可能会遇到中文乱码的问题,这主要...在实际操作过程中,可以参考提供的`weblogic10在UNIX下部署,中文乱码问题的解决.txt`文件,里面可能包含具体的步骤和解决方案。
在Oracle数据库环境中,PL/SQL是Oracle数据库内置的编程语言,用于编写数据库应用程序。然而,当用户在使用Oracle客户端进行PL/SQL开发时,经常...在解决乱码问题时,保持耐心,仔细排查,通常能够找到合适的解决办法。
总之,解决Oracle数据库的乱码问题需要深入理解字符集的工作原理,确保所有环节从输入、存储到输出都保持字符集的一致性。在处理中文数据时,选择支持汉字的字符集如GBK或UTF-8尤为重要,以确保数据的准确显示和处理...
"Server-U出现乱码的解决方法"这个标题所指的问题,就是当使用Server-U这款流行的FTP(文件传输协议)服务器软件时,遇到了中文文件名或目录名显示为乱码的状况。Server-U是一款功能强大的FTP服务器程序,它允许系统...
修改这些配置文件,确保它们正确地指定中文编码,比如UTF-8,有助于解决乱码问题。 在提供的文档“ReportBuilder打印出乱码解决方法.doc”中,可能详细记录了以上提到的一些解决方案,包括具体的操作步骤和代码示例...
本文将深入探讨这一问题,并提供一套详细的解决方案,帮助读者理解和解决因字符集不匹配而导致的PL/SQL中文乱码现象。 ### PL/SQL中文乱码原因分析 PL/SQL中文乱码的根本原因在于数据库与应用程序(如PL/SQL ...
解决乱码问题的关键在于准确识别数据源的编码格式,并在数据传输和处理的各个环节保持一致的字符集设置。无论是PL/SQL导入表还是LOAD外部文件,提前检查和设置正确的字符集,以及在必要时使用编码转换工具,都是避免...
阅读这个文件,结合上下文,可能能获取更多解决乱码问题的细节。 总的来说,解决Tomcat控制台乱码问题需要从多个角度考虑,包括Java的编码设置、Tomcat的日志配置以及系统控制台本身的设置。通过尝试上述方法,通常...
`unix2dos`是一个实用的小程序,它能够帮助用户解决这个问题。这个工具可以将使用LF行结束符的UNIX文本文件转换为使用CRLF行结束符的DOS格式,反之亦然。`unix2dos`的功能并不限于行结束符的转换,它还可以处理其他...
本文将深入探讨“20种中文乱码解决办法”,并结合“SetCharacterEncodingFilter”这个类,来讲解如何有效地解决乱码问题。 首先,我们要理解中文乱码的根源。乱码通常出现在字符编码不一致的情况下,比如文件存储...
ubuntu 16.04 下 VLC 播放器中文乱码解决办法 在 Ubuntu 16.04 系统中安装 VLC 播放器时,可能会出现中文乱码的问题,这是由于 VLC 播放器的默认编码设置不正确所致。为了解决这个问题,我们可以通过修改 VLC ...
标题提到的"ffmpeg3.4.2完美解决windows乱码(源码补丁)"是针对FFmpeg在处理中文文件名或元数据时可能出现的问题提供的一种解决方案。 FFmpeg 3.4.2是该软件的一个特定版本,它可能包含了对Windows平台中文乱码问题...
解码是计算机科学和信息技术领域中的一个重要概念,特别是在处理不同编码格式时,它常常成为解决数据乱码问题的关键。乱码通常发生在不同编码系统之间不兼容或者数据编码方式不正确的时候,导致原本应该正常显示的...
本文将深入探讨如何解决Java中文件解析时出现的乱码问题。 首先,理解字符编码至关重要。常见的字符编码有ASCII、ISO-8859-1、GB2312、GBK、GB18030以及Unicode(包括UTF-8、UTF-16等)。在Java中,默认的字符编码...
修改系统的环境变量也是解决乱码的一个有效手段。可以在`.bashrc`文件中添加以下内容: ```bash export LANG="zh_CN.UTF-8" export LC_ALL="zh_CN.UTF-8" ``` 这些设置确保了系统环境变量指向中文环境,从而帮助Vim...
Linux 定时脚本 crontab 中文乱码解决方案 Linux 系统中的定时脚本 crontab 是一个功能强大的工具,允许用户在指定的时间执行特定的命令或脚本。然而,在使用 crontab 执行 jar 文件时,如果输出结果包含中文字符...
在使用SAP Data Services(简称DS)进行数据抽取时,尤其是在不同的操作系统(如AIX、UNIX或Linux)上运行且涉及跨数据库操作的情况下,中文字符可能会出现乱码的问题。这种现象严重影响了数据的准确性和可用性,...
本文将深入探讨SmartUpload上传文件时如何解决中文乱码的问题。 首先,我们要理解乱码产生的原因。在计算机系统中,不同的文件系统和编程语言可能使用不同的字符编码标准,如ASCII、GBK、UTF-8等。如果在读取或写入...
标题“wine安装同花顺远航版界面乱码解决”提示我们,问题的核心在于同花顺远航版在Wine环境下界面显示的字符编码不正确,导致乱码现象。解决这个问题的关键在于调整字体和编码设置。 描述中提到的解决方案是“解压...