资料整理

 

Tomcat中文问题的处理方法

第一部分:  jsp  ---> java/servlet

对于流行的Tomcat来说,有以下三种解决方法:

  1) 更改 D:\Tomcat\conf\server.xml,指定浏览器的编码格式为简体中文

  方法是找到 server.xml 中的

    <Connector port="8080" maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
    enableLookups="false" redirectPort="8443" acceptCount="100"
    connectionTimeout="20000" disableUploadTimeout="true" URIEncoding='GBK' />

  标记,粗体字是我添加的。

  可以这样验证你的更改是否成功:在更改前,在你出现乱码的页面的IE浏览器,点击菜单查看|编码,会发现西欧(ISO)”处于选中状态。而更改后,点击菜单查看|编码,会发现简体中文(GB2312)”处于选中状态。注意你的Tomcat的common下要有"endorsed"和"i18n"文件夹,其中包含编码所需的lib

   
  2)更该 Java 程序,
 public class ThreeParams extends HttpServlet {
  public void doGet(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {
      response.setContentType("text/html; charset=GBK");
      ...
  } 
}

  粗体字是必需要有的,它的作用是让浏览器把Unicode字符转换为GBK字符。这样页面的内容和浏览器的显示模式都设成了GBK,就不会乱码了。

  




第二部分    java/servlet   ---->   mysql
mysql和Hibernate中的中文问题解决方法
另一种解决方法(mysql-4.1.11).低版本的mysql似乎没出现过中文问题(mysql-4.0.17). :)

1.添加一个过滤器,将字符集编码设为GBK.
修改web.xml:

 <filter>
  <filter-name>SetCharacterEncoding</filter-name>
  <filter-class>hxz.filter.SetEncodingFilter</filter-class>
  <init-param>
   <param-name>encoding</param-name>
   <param-value>GBK</param-value>
  </init-param>
 </filter>
 
 <filter-mapping>
  <filter-name>SetCharacterEncoding</filter-name>
  <url-pattern>/*</url-pattern>
 </filter-mapping>

新建一个过滤器:
package hxz.filter;

import java.io.IOException;

import javax.servlet.*;

public class SetEncodingFilter implements Filter {
 
 // default character encoding
 String defaultEncoding = "GBK"; 
 
 public void init(FilterConfig config) throws ServletException {
  String encoding = config.getInitParameter("encoding");
  if (encoding != null) {
   defaultEncoding = encoding;
  }
 }

 public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
  request.setCharacterEncoding(defaultEncoding);
  chain.doFilter(request, response);
 }

 public void destroy() {
  defaultEncoding = null;
 }

}

2.修改hibernate配置文件:
<property name="url">
  <value>jdbc:mysql://localhost:3306/test?useUnicode=true&amp;characterEncoding=GBK</value>
</property>
注意后面的:useUnicode=true&amp;characterEncoding=GBK, 在xml中&要改为;amp;

3.在新版本中mysql建表时,你可以选择一种字符集,将它设为GBK.
jsp或servlet中把字符集改为GBK.

 

posted on 2006-07-14 09:09 谢玮 阅读(269) 评论(0)  编辑  收藏 所属分类: java应用程序数据持久化应用服务器Web


只有注册用户登录后才能发表评论。


网站导航:
 

导航

统计

常用链接

留言簿(1)

随笔档案

文章分类

文章档案

搜索

最新评论