tomcat 5.09 中文问题解决全攻略

2016-02-19 19:26 6 1 收藏

最近很多朋友喜欢上设计,但是大家却不知道如何去做,别担心有图老师给你解答,史上最全最棒的详细解说让你一看就懂。

【 tulaoshi.com - Web开发 】

  我开发基于 eclipse3.2+j2ee5.0 +tomcat5.09+mysql5.0

  一、表单POST的数据的中文乱码解决

         这类型的数据中文可以通过filters来实时过滤。filters代码如下:

  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 ...{

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/webkaifa/)

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

  }
   

  filters配置(配置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>

  
   

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/webkaifa/)

  二、将中文数据存入数据库乱码问题

  以mysql为例,改写连接字符串即可:

  jdbc:mysql://localhost:3306/workshopdb? useUnicode=true&characterEncoding=GBK
  三、 通过url传递参数和识别中文文件名问题

  问题表现:1、通过url传递参数,例如:  

  http://localhost:81/crjy/admin/articlelist.jsp?levelId=64&levelName=学生党建
   
  通过request.getParameter("levleName")得到的值为乱玛。
  2、识别中文文件名,例如:

  img src="./pic/四川地图.jpg"  图片不能显示。
  解决之道:

  1、如果只想解决第一个问题那很简单,两句代码即可:

  String role=request.getParameter("chara");
  role=new String(role.getBytes("ISO-8859-1"),"GB2312");
  out.println(role);
  因为tomcat服务器默认用 ISO-8859-1 字符集的。但是这样只能解决第一个问题不能解决中文文件名问题

  2、两个问题一起解决,修改server.xml,找到下列语句添加URIEncoding="GB18030",这样两个问题就一起解决了(不需要role=new String(role.getBytes("ISO-8859-1"),"GB2312");转化,得到的参数即为正常的中文) 

      Connector acceptCount="100" connectionTimeout="20000" debug="0" disableUploadTimeout="true" enableLookups="false" maxSpareThreads="75" maxThreads="150" minSpareThreads="25" port="81"  redirectPort="8443"/
   另外许多文章介绍可以添URIEncoding="UTF-8",这样是可以解决中文文件名问题,但是通过String role=request.getParameter("chara");得到url传递的参数时,得到的是UTF-8编码的,需要转为GB2312比较麻烦。

  以上是本人在使用中的总结,希望大家提供宝贵意见。
  http://blog.csdn.net/lijiuu/archive/2007/02/25/1514354.aspx

来源:http://www.tulaoshi.com/n/20160219/1620982.html

延伸阅读
漂亮好看的操作系统始终不是我们的目的. 希望这篇文字能帮助至少一两个朋友从这个 Linux 的中文美化问题里面彻底解脱出来, 而真正投入到利用 Linux 为我们服务, 利用 Linux 进行开发工作的实质性事情当中. 以下内容包括: 1. 为 Redhat 的两个字体子系统添加字体 2. 让 Enlightenment 显示中文 3. Java 的中文问题: ...
标签: Web开发
=================================== 开发java应用出现乱码是很常见的,毕竟现在unicode的使用还不是很广泛,在使用gb2312(包含了gbk简体,big5繁体)的系统中要正确实现 中文的display和数据库的存储是最基本的要求。 ============================== 1,首先developer要明确自己为什么会遇到乱码,遇到什么样的乱码...
标签: Java JAVA基础
  来源:网友提供如有版权问题请与我们联系<BR<BRTomcat IIS             HowTo:将Tomcat装入IIS全攻略<BR1,我的安装环境是W2K(日文版),IIS5<BRTomcat             3.1下载地址<BRhttp:/...
《尘埃3》运行问题解决 会员:popforce 分享 近来尘埃3破解后有许多玩家和我一样报错假死无法进入游戏  和3DM的硬盘版都试过无效,查帖子各种方法都试过无解!偶然查看游戏目录属性发现游戏容量未达到11.1G,可我下的都是校验过的安装程序应该不会短文件,只好换个破解小组安装文件再试(VERYCD上发布的五国语言高压硬盘版2.2G)这...
标签: Java JAVA基础
http://www.netqu.com 中华技术网会员 wuxuehui 发布 1,我的安装环境是W2K(日文版),IIS5 Tomcat 3.1下载地址 http://jakarta.apache.org/builds/tomcat/release/v3.1/bin/ isapi_redirect.dll下载地址 http://jakarta.apache.org/builds/tomcat/release/v3.1/bin/win32/i386/ 放到{TOMCATHOME}\bin\iis\i386\isapi_redirect.dll ...

经验教程

187

收藏

72
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部