再次出现Tomcat编码问题

时间:2015-01-20 13:16:23

标签: java jsp tomcat encoding

StackOverFlow上有很多关于这个主题的问题:

  1. Handling Character Encoding in URI on Tomcat
  2. Why the character is corrupted when use request.getParameter() in java?
  3. request.getParameter() does not display properly character encoding in java servlet
  4. Character encoding problems with tomcat
  5. 在此问题上,Tomcat Wiki中还有一个链接:http://wiki.apache.org/tomcat/FAQ/CharacterEncoding

    所以我不知道我应该写的问题的标题。也许你会帮我解决这两个问题。

    我提出的问题:当带有西里尔字符的文本来自请求时,我得到以下请求参数值:to ÐÐ¸Ð·Ð½ÐµÑ Ð¸ ÑинанÑÑ

    所以我现在拥有的是:

    1. 所有jsp个文件都包含UTF-8版本:
    2. <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
      <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
      <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
      <html>
      <head>
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
      
      1. 在Eclipse-&gt; Preferances-&gt; General-&gt;工作区 - &gt;文本文件编码设置为UTF-8
      2. 数据库编码设置为:DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci ;

      3. \apache-tomcat-7.0.57\conf文件夹server.xml中,其中一个连接器已修改为:

      4. <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8"/>

        1. 使用doFilter方法创建编码过滤器:

          public void doFilter(ServletRequest request, ServletResponse response,
                  FilterChain chain) throws IOException, ServletException {
              HttpServletRequest httpRequest = (HttpServletRequest)request;
              String requestEncoding = request.getCharacterEncoding();
              if (requestEncoding == null) {
                  request.setCharacterEncoding(encoding);
              }
              chain.doFilter(request, response);
          }
          
        2. jsp阅读时,我也试图以不同的方式获取参数,例如:

           <a href="<c:url value="controller?command=viewFaculty"> 
          <c:param name="name" value="${faculty.name}"/> </c:url>">${faculty.name}</a>
          

          <a href="<c:url value="controller?command=viewFaculty"> <c:param name="name" value="${faculty.name}"/>
          

          我仍然得到这个丑陋的角色。你能帮我一些建议吗?

1 个答案:

答案 0 :(得分:0)

我解决了我的问题。问题是我编辑的不是原始server.xml。我注意到tomcat已经出现在Eclipse项目资源管理器中,作为项目的书签Servers。 有些文件在他身上,例如:

  1. catalina.policy
  2. catalina.properties
  3. context.xml
  4. web.xml
  5. tomcat-users.xml
  6. server.xml
  7. 事实上,tomcat已经预先配置了文件,我自己编辑server.xml文件夹中的文件\apache-tomcat-7.0.57\conf与此项目中的文件不同,这很奇怪。

    在问题的开头,我已经将一些问题与这个问题联系起来了,在我的帖子的最后,我想分享我最近发现的那个,在我看来这是这个问题的最佳指南: How to get UTF-8 working in Java webapps?