如何将struts2中的字符集更改为utf-8

Posted

技术标签:

【中文标题】如何将struts2中的字符集更改为utf-8【英文标题】:How to change charset in struts2 to 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。 【参考方案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 中不存在)。

【讨论】:

以上是关于如何将struts2中的字符集更改为utf-8的主要内容,如果未能解决你的问题,请参考以下文章

如何将Apache的默认编码更改为UTF-8?

sql 将字符集编码更改为数据库本身的UTF-8

如何在连接字符串中将 Access DB 从 ISO-8859-2 更改为 UTF-8?

我应该从 UTF-8 更改为 UTF-16 以适应我的 HTML 中的中文字符吗?

如何将列表中的字符串值更改为 Python 中的浮点数

在Python 3.8.2中,如何将包含' uxxxx'序列的字符串转换为utf-8?