彻底解决Tomcat 5.0.19中文乱码

一、Include的页面乱码

现象:include进来的页面出现乱码,其它页面正常。

原因:Tomcat在缺省情况下使用ISO-8859-1编码,但是在include时有时Tomcat不能正确根据外层.jsp文件的编码解析include进来的文件,造成include进来的文件中的中文乱码。

解决:这儿可以有很多解决办法,但是对于我们的中文环境,从根本上的解决办法是将Tomcat 5.0.19的核心缺省编码从ISO-8859-1修改为GBK 。可以在下面地址下载修改过的jar文件,

jasper-compiler.jar,jasper-runtime.jar位于/common/lib下,其它位于/server/lib下,将新的.jar文件替代原.jar即可。

二、提交的数据乱码

现象:通过表单提交的数据出现乱码。

原因:原因未明。可能是Tomcat在接收到请求后,并没有能够根据request中的信息提前正确的编码方式。

解决:可以添加一个设置字符集的Filter。

package filters;
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);
}
}

配置web.xml

<filter>
 <filter-name>Set Character Encoding</filter-name>
 <filter-class>filters.SetCharacterEncodingFilter</filter-class>
 <init-param>
  <param-name>encoding</param-name>
  <param-value>GBK</param-value>
 </init-param>
</filter>
<filter-mapping>
 <filter-name>Set Character Encoding</filter-name>
 <url-pattern>/*</url-pattern>
</filter-mapping>

时间: 2024-10-30 11:12:02

彻底解决Tomcat 5.0.19中文乱码的相关文章

彻底解决Tomcat 5.0.19中文乱码(过滤器)

一.Include的页面乱码 现象:include进来的页面出现乱码,其它页面正常. 原因:Tomcat在缺省情况下使用ISO-8859-1编码,但是在include时有时Tomcat不能正确根据外层.jsp文件的编码解析include进来的文件,造成include进来的文件中的中文乱码. 解决:这儿可以有很多解决办法,但是对于我们的中文环境,从根本上的解决办法是将Tomcat 5.0.19的核心缺省编码从ISO-8859-1修改为GBK .可以在下面地址下载修改过的jar文件, jasper-

完美解决Get和Post请求中文乱码的问题_java

对于Post请求,只需在Servlet或者jsp中写入如下代码就可以把解决从表单中传入的中文乱码问题 request.setCharacterEncoding("utf-8"); 而对于Get请求,因为请求参数会被附加到地址栏的URL之后,所以不能用上面的处理方法.应该这样: String str=request.getQueryString(); //使用URLDecoder解码字符串 String str1=java.net.URLDecoder.decode(str,"

怎样解决MySQL 5.0.16的乱码问题

问:怎样解决MySQL 5.0.16的乱码问题? 答:MySQL 5.0.16的乱码问题可以用下面的方法解决: 1.设置phpMyAdmin Language:Chinese simplified (zh-utf-8) MySQL 字符集:UTF-8 Unicode (utf8) MySQL 连接校对 gbk_chinese_ci 2.创建数据库时 整理设置成 gbk_chinese_ci 3.用SQL建立表中 ENGINE=MyISAM DEFAULT CHARSET=gbk; ENGINE=

怎样才能解决MySQL 5.0.16的乱码问题

问:怎样解决MySQL 5.0.16的乱码问题? 答:MySQL 5.0.16的乱码问题可以用下面的方法解决: 1.设置phpMyAdmin Language:Chinese simplified (zh-utf-8) MySQL 字符集:UTF-8 Unicode (utf8) MySQL 连接校对 gbk_chinese_ci 2.创建数据库时 整理设置成 gbk_chinese_ci 3.用SQL建立表中 ENGINE=MyISAM DEFAULT CHARSET=gbk; ENGINE=

Tomcat发布web项目中文乱码问题

问题描述 Tomcat发布web项目中文乱码问题 我写了一个java web项目, 在eclipse下发布到tomcat上,运行没有问题,在所有的浏览器上都可以支持下载功能. 但是当我把web项目打成war包放到tomcat下启动tomcat,web项目也能运行, 只是在下载时在IE11中会出现传的参数中文乱码问题.求救啊 解决方案 中文乱码的问题,直接修改tomcat->conf->server.xml文件,在文件的Connector中加上这一句设置URIEncoding="UTF

解决PHPWord导出生成Word中文乱码问题

最近一个项目开发要用到PHP技术导出Word文档,比较了几种方案,首先是使用Microsoft Office自带的ActiveX/COM组件,比如Word.Application,这种方式的优点是格式兼容度高,可以生成纯doc的Word2003格式文档,缺点一是比较占资源(调用会启动一个WINWORD.EXE进程),不适合Web多用户访问使用:二是PHP这种Web开发技术大多数是跑在Linux服务器上,当然也就无法使用Windows下的技术了,平台可移植和兼容性不好.第二种生成Word的方案是生

解决PHP导出CSV文中文乱码问题

  csv文件可以使用excel打开并进行一些操作了,同时我们用php导入csv文件是非常的简单了,所以我们通常会使用php来导出csv了,但有时会碰到在使用Excel打开csv时出现乱码问题了,下面我们就来看解决办法. 乱码情况 写了一段导出 CSV 文件的代码,可以正常输出 使用 CSV 和 TXT 程序打开文件是正常的,但是使用 Excel 打开文件就出现了中文乱码的问题(这就奇怪了, 为什么在 Excel 中会乱码呢?) 通过查看编码发现,导出的 CSV 文件是 UTF-8 无BOM编码

解决php mysql查询插入中文乱码问题

  一.中文问题其实就是经统一编码了否则就会乱码 1.数据库与php页面编码统一 2.数据库数据表字段与页面编码统一 如果做到上面两种就不存在中文乱码问题了,那么我们来看mysql中文乱码问题解决例子 1.我的mysql表如下 -- -- 表的结构 `useradmin` -- 代码如下   CREATE TABLE IF NOT EXISTS `userain` ( `id` int(4) NOT NULL AUTO_INCREMENT, `username` varchar(20) DEFA

解决MYSQL导入脚本数据中文乱码

stu_data.sql中含有中文,要将该脚本数据导入数据库stu_data中.通常默认导入时会出现中文乱码,修改my.ini文件default-character-set=utf8,也不能解决问题-- 正确解决办法: a.数据导出:编码选择utf8 b.数据导入: u stu_data C utf8 . stu_data.sql