【问题标题】:How to change charset in struts2 to utf-8如何将struts2中的字符集更改为utf-8
【发布时间】:2012-08-26 13:47:51
【问题描述】:

您好,我有一个测试字段,我想在其中进行非英语测试(例如俄语) 但在我的行动课上,我得到的不是文字,而是?????????。 我试图编写描述Parameters charset conversion in struts2的简单过滤器

但它仍然不起作用.. 有人可以帮我吗

更新 我有这个

<s:textfield key="index.login" name="login" />

我想用俄语对其进行测试,然后将其发送到我的操作中。但在我的操作类中,我得到的不是文本,而是 ?????????。要解决这个问题,我需要将字符集更改为 utf8 而不是 win1251 .

【问题讨论】:

  • 您到底尝试了什么?您需要准确解释您要做什么。您提供的链接已经 已经 使用 UTF-8 编码,所以这个问题没有意义。我不得不对这个问题投反对票,因为它是我很长时间以来看到的最糟糕的研究问题之一。
  • 你的页面编码是什么?必须是 并且 .java 文件也应该是 UTF-8。

标签: java jsp struts2 servlet-filters


【解决方案1】:

创建过滤器:

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;

public class CharacterEncodingFilter implements Filter {

    @Override
    public void init(FilterConfig filterConfig)
            throws ServletException {
    }

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain)
            throws IOException, ServletException {
        servletRequest.setCharacterEncoding("UTF-8");
        servletResponse.setContentType("text/html; charset=UTF-8");
        filterChain.doFilter(servletRequest, servletResponse);
    }

    @Override
    public void destroy() {

    }
}

在你的 web.xml 中声明它:

<filter>
    <filter-name>CharacterEncodingFilter</filter-name>
    <filter-class>your.package.filter.CharacterEncodingFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>CharacterEncodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

你可以走了。还要确保您的每个JSP 页面都包含:&lt;%@ page contentType="text/html;charset=UTF-8" language="java" %&gt;。如果您的应用程序在 tomcat 上运行,请确保将 URIEncoding="UTF-8" 属性添加到您的 Connector 元素。

【讨论】:

    【解决方案2】:

    如果需要强制jsp转为UTF-8,可以在web.xml中写如下:

    <jsp-config>
        <jsp-property-group > 
            <url-pattern>*.jsp</url-pattern>
            <page-encoding>UTF-8</page-encoding>
        </jsp-property-group>
    </jsp-config>
    

    【讨论】:

      【解决方案3】:

      (无法评论之前的回复)

      <jsp-config>
      <jsp-property-group> 
          <url-pattern>*.jsp</url-pattern>
          <page-encoding>UTF-8</page-encoding>
      </jsp-property-group>
      

      适用于 web.xml > 2.3

      我不确定 2012 年它是否还不存在,但请注意此元素仅适用于 web.xml > 2.4(该元素在 2.3 http://java.sun.com/dtd/web-app_2_3.dtd 中不存在)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-03-22
        • 1970-01-01
        • 2010-11-12
        • 2011-03-31
        • 1970-01-01
        • 2014-07-11
        • 1970-01-01
        • 2020-11-26
        相关资源
        最近更新 更多