关于Struts2中提交出现乱码的问题

在 Struts2 中出现乱码,在多次试探之后发现是在提交和读取的时候出现了编码不一致的错误。

由于提交的时候是由 utf-8 编码,而在读取的时候却是采用了 GBK 读取,由于编码上不一致导致乱码。

而要解决乱码,第一是要看网页的编码方式,在以下两行中

<%@ page language="java" contentType="text/html; charset=utf-8"%>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

可以采用过滤器的方式进行统一设置。

import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@WebFilter(filterName = "CodeFilter", urlPatterns = &#123; "/*" &#125;)
public class CodeFilter implements Filter &#123;

    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
            throws ServletException, IOException &#123;
        HttpServletRequest rq = (HttpServletRequest) request;
        HttpServletResponse rp = (HttpServletResponse) response;
        rq.setCharacterEncoding("utf-8");
        rp.setCharacterEncoding("utf-8");
        rp.setContentType("text/html;charset=utf-8");

        rp.setHeader("Cache-Control", "no-cache");
        rp.setHeader("Pragma", "no-cache");
        rp.setDateHeader("expires", -1);
        chain.doFilter(request, response);
    &#125;
&#125;

另一方面便是可能是你的 Struts2 的配置文件中出现错误。
修改 Struts2 的配置文件

<constant name="struts.i18n.encoding" value="UTF-8"></constant>

检查这一行是否与使用的编码相同

完成以上两步,乱码问题基本就能解决了。


   转载规则


《关于Struts2中提交出现乱码的问题》 xfx 采用 知识共享署名 4.0 国际许可协议 进行许可。
 上一篇
牛客练习赛34 f题 Tachibana Kanade Loves Game 牛客练习赛34 f题 Tachibana Kanade Loves Game
题目链接 题目描述立华奏是一个天天打比赛的萌新。 省选将至,萌新立华奏深知自己没有希望进入省队,因此开始颓废。她正在颓废一款名为《IODS 9102》的游戏。 在游戏中,立华奏拥有 k 点血量,而她的对手拥有 q 点血量。当她的血量变为 0
2019-04-07
下一篇 
(团体程序设计天梯赛)L2-011 玩转二叉树 (团体程序设计天梯赛)L2-011 玩转二叉树
给定一棵二叉树的中序遍历和前序遍历,请你先将树做个镜面反转,再输出反转后的层序遍历的序列。所谓镜面反转,是指将所有非叶结点的左右孩子对换。这里假设键值都是互不相等的正整数。 输入格式:输入第一行给出一个正整数N(≤30),是二叉树中结点的个
2019-03-23
  目录