当前位置: 首页 > 知识库问答 >
问题:

struts2如何设置UTF-8字符编码

夏建弼
2023-03-14

我有一个jsp文件,在那里我收集表单值,并通过jQuery Ajax将其发送到strut 2 action class。

我的Ajax函数看起来像

var DataValues = $("#Form1").serialize();
    alert(DataValues);
    alert(decodeURI(DataValues));
    $.ajax({url: urlPass,
        dataType:datatypepass,
        method:methodpass,
        data:DataValues,
        success: function(data,stat,Xhr){calbackPass(data,stat,Xhr);},
        error:function(xhr, status, error){alert("Error : "+xhr.responseText+" status : "+xhr.status);}
    });

当我解码并提醒它的文本我正确编码和解码。

当我通过ajax将其发送到struts2时,它会产生问题。

我已经检查了Interceptor中的值它显示值???????

拦截器

  public class LoginInterceptor extends AbstractInterceptor implements StrutsStatics
    {
    @Override
        public String intercept(ActionInvocation arg0) throws Exception 
        {
            HttpServletRequest rs=ServletActionContext.getRequest();
            System.out.println(rs.getCharacterEncoding());
            Map session=ActionContext.getContext().getSession();
            Map<String, Object> parameters=ActionContext.getContext().getParameters();
            for(Map.Entry<String, Object> ll:parameters.entrySet())
            {
                String a[]=(String[])ll.getValue();
                for(String b:a)
                {
                    System.out.println(ll.getKey()+" : "+b);
                }   
  }}}}

在我的jsp文件中,我将内容类型设置为UTF-8,在ajax中,我也检查了内容类型,但它不起作用。在tomcat服务器中。我还将内容类型设置为UTF-8

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

必须对此UTF-8进行任何其他设置

提前谢谢。

共有1个答案

伯彦君
2023-03-14

将字符编码过滤器添加到网站。在Struts之前拦截所有请求的xml

<filter>
  <filter-name>CharacterEncodingFilter</filter-name>
  <filter-class>
    org.apache.catalina.filters.SetCharacterEncodingFilter
  </filter-class>
  <init-param>
    <param-name>encoding</param-name>
    <param-value>UTF-8</param-value>
  </init-param>
  <init-param>
    <param-name>ignore</param-name>
    <param-value>true</param-value>
  </init-param>
</filter>

<filter-mapping>
  <filter-name>CharacterEncodingFilter</filter-name>
  <url-pattern>/*</url-pattern>
</filter-mapping>

org。阿帕奇。卡塔琳娜。过滤器。SetCharacterEncodingFilter可在Tomcat 7.0.20及以后的版本中提供。否则,只需实现自己的过滤器,使用

编辑:添加/以正确关闭过滤器和过滤器映射标记

request.setCharacterEncoding("UTF-8");
 类似资料:
  • 我正在Ubuntu中运行httpd+mod_jk+2个tomcat服务器。当我以非拉丁语言提交表单时,我会在DB中得到垃圾。如果我通过Tomcat提交相同的表单,直接绕过httpd,那么一切看起来都很好。以下是我的配置: /ETC/APACHE2/CONF.D/CHARSET: Tomcat1: Tomcat2: JDBC连接: jdbc:mysql://localhost:3306/myapp?

  • 问题内容: 我有一个PHP脚本,名为: http://cyber- flick.com/apiMorpho.php?method=getMorphoData&word=kot 以纯文本显示一些数据: 如您所见,在适当的字符位置上有很多“忙碌”。我想做的是以某种方式显示此内容,以便人们在浏览器中看到正确的UTF-8字符。 您可以将其封装在HMTL标签中并以元UTF-8编码进行设置,但是由于将从该脚本

  • 问题内容: 嗨,我有一个测试场,我不想在其中进行英语测试(例如 俄语),但是在我的动作课中我得到的不是文字?????????。我 试图编写简单的过滤器,该过滤器描述 了struts2中的参数字符集转换 但是还是不行..有人可以帮我吗 更新我有这个 我想用俄语进行测试,然后将其发送给我的 action。但是在我的action类中,我得到的不是文本,而是纯文本?????????。要解决 此问题,我需要

  • 问题内容: 我遇到了这行遗留代码,我试图找出这些遗留代码: 据我了解,它是使用相同的charSet进行编码和解码。 这与以下内容有何不同? 在任何情况下,两条生产线的输出将不同? ps:只是要澄清一下,是的,我知道Joel Spolsky撰写的关于编码 的出色文章! 问题答案: 这可能是很复杂的方式 这缩短了String,而所使用的基础char []则更长。 但是,更具体地说,将检查每个字符是否都

  • 我使用@FormUrlEncoded发送到服务器。当我向服务器发送字符串时,我得到如下请求体 所以我找到了加法器。拦截器 ApiInterface接口 但它不起作用。英语和数字都可以,但不是我的语言。如何修复它?我也试过设置-

  • 控制台输出中的西里尔符号显示不正确。Jenkins正在Windows 7上运行Tomcat/8.5.11 Jenkins属性显示: file.encoding cp1251 sun.jnu.encoding cp1251 sun.stderr.encoding cp866 sun.stdout.encoding cp866 解决了:我在bin文件夹中创建了文件setenv.bat并设置java_o