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 10 在 UNIX 下部署, 中文乱码问题的解决
加密 解密 解决乱码 多环境windows unix linux等应用
本,其在使用 SCO Unix 中的 vi 时输入中文有问题 。 问题的解决方法刚刚找到,但是还没来得及修改程 序。 问题(1):vi 中输入中文不能正常显示,而是输出xxx 形式的八进制字符串。解决方法:并不是本Telnet的毛 ...
Kiwi Syslog Server安装教程: ...这些产品的安装与配置非常简单,提供功能丰富的解决方案来接收、记录、显示并转发各种网络设备(例如路由器、交换机、Unix 主机以及其它启用 syslog 的设备)的 syslog 消息。
解决方案: 打开sql文件,在SQL文件第一行加入如下内容 /*!40101 SET NAMES utf8 */; 将SQL文件另存为UTF-8 NO BOM格式 通过ftp上传sql文件,放在根目录下就可以了 进入你的cPanel, 看到cron jobs 这个图标,点击...
今天在win7下使用gvim打开以前在ubuntu下用vim写的文档时,显示的中文全是乱码,这可不行! google了一下,知道了在console下输入: set encoding=utf-8 解决问题。 但是每打开一个这样的文件都要设置,gvim不是...
Expect恰恰填补了其中的一些裂痕,解决了在Unix环境中长期存在着的一些 问题。 Expect使用Tcl作为语言核心。不仅如此,不管程序是交互和还是非交互的,Expect都能运用。这是一个小语言和Unix 的其他工具配合...
发送中文短信,会用到UCS2编码,很多网友反应中文发送和接收乱码,这个烦恼可以解决了。 注意:要在系统配置里增加 LANG=zh_CN.GB18030 export LANG 语言配置不对,这个函数会出错的,另外,例子有点问题,换一个...
rlwrap解决Linux及Unix下sqlplus中上下左右回退无法使用乱码情况,安装依赖包
Xftp 7是一种灵活且轻量级的SFFT/FTP客户端,用于需要安全地通过网络传输文件的用户。使用Xftp7软件能让文件传输被...重要的是可以自定义上传文件的编码 可以有效解决 由WINDOWS平台访问LINUX平台FTP中文件名乱码的问题
使用 WinSCP 可以连接到一台提供 SFTP (SSH File Transfer Protocol)或 SCP (Secure Copy Protocol)服务的 SSH (Secure Shell)服务器,通常是 UNIX 服务器。SFTP 包含于 SSH-2 包中,SCP 在 SSH-1 包中。两种协议都...
为恢复FAT12/16/32、NTFS、NTFS5(由 Windows 2000/XP/2003/Vista创建或更新)、Ext2FS/Ext3FS(LINUX 文件系统)以及 UFS1/UFS2(FreeBSD/OpenBSD/NetBSD文件系统)分区的文件提供了最为广泛的数据恢复解决方案。...
Xshell 是目前最好的linux远程登录工具,速度流畅且完美解决了中文乱码。 Xshell 是一个强大的安全终端模拟软件,支持SSH1、SSH2以及Miscrosoft Windows 的 TELNET协议。 -----------------------------------------...
使用 WinSCP 可以连接到一台提供 SFTP (SSH File Transfer Protocol)或 SCP (Secure Copy Protocol)服务的 SSH (Secure Shell)服务器,通常是 UNIX 服务器。SFTP 包含于 SSH-2 包中,SCP 在 SSH-1 包中。两种协议都...
优化部分模板详情里字体过大会乱码的问题。 优化伪静态规则分析,解决某些特殊后缀会解析失效的问题。 优化自动清理缓存功能,调整空间清理延迟。 (注意:)↓↓↓↓↓↓↓↓↓↓ 上传程序或者升级都必须使用2进制模式...
AMR,然后保存为UNIX格式的Amr文件即可。 以上就是方法,如果懂技术的可以编写成软件或脚本,如果不会的,也可下载我提供的小软件,批量转换,谢谢各位对此帖的支持,谢谢!! 或者下载我做好的一个记事本文件,...
但WinSCP不支持编码选择,也就是说,你在Windows下使用WinSCP连接一个Linux机器,因为Linux和Windows的默认编码不同,因此是无法访问上面的中文文件或者文件夹的(将看到乱码)。一种解决方法就是在打开winscp时...
ShopNC综合多用户商城系统是一个面向大型电子商务平台架设的解决方案。系统采用PHP MySQL构建,运营者可以轻松的在网络中构建一个商城交易平台,提供自由开店、在线交易、供求信息等多种服务。 可以广泛应用在综合...
DSShop商城系统是一套完善的B2C(单用户商城)解决方案。系统pc端后台使用国内优秀开源框架THinkPHP,基于PHP MySQL开发,采用B/S架构,wap端使用vue.js构造,依据6年电商经验打造出的一套开源的B2C电子商务系统。 ...
淘客帝国v5.20破解版商业无限制稳定版 ...本程序后台全部功能完全本地化! 【安装方法】 1:下载最新淘客帝国系统安装包并解压缩 2:上传至网站根目录,或子目录 ...2:Linux/Unix 平台:Apache + PHP(V5.1以上)