如何将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
页面都包含:<%@ page contentType="text/html;charset=UTF-8" language="java" %>
。如果您的应用程序在 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的主要内容,如果未能解决你的问题,请参考以下文章
如何在连接字符串中将 Access DB 从 ISO-8859-2 更改为 UTF-8?