javaweb基础——解决请求参数的中文乱码问题

Posted 名字真的很急用

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javaweb基础——解决请求参数的中文乱码问题相关的知识,希望对你有一定的参考价值。

中文乱码处理分二种情况:
第一种情况:处理get方式提交的中文乱码
使用的String的构造方法解决中文乱码:new String(字节数组,编码格式)
代码:String newValue = new String(value.getBytes(“ISO8859-1”),“UTF-8”)。

第二种情况:处理post请求的中文乱码问题
post提交,会把参数首先提交到request对象的缓冲区中,缓冲区默认的编码格式为ISO-8859-1,不支持中文。
代码:request.setCharacterEncoding(“utf-8”);

<form action="/getpost" method="get">

    用户名: <input type="text" name="name"></br>
    密码:<input type="text" name="password"></br>
    <input type="submit" value="提交">

</form>
<hr size="2" color="red">

<form action="/getpost" method="post">

    用户名:<input type="text" name="name"></br>
    密码:<input type="text" name="password"></br>
    <input type="submit" value="提交">
</form>
@WebServlet("/getpost")
public class GetAndPost extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //也要处理响应中文乱码

        String name = req.getParameter("name");
        String s = new String(name.getBytes("ISO8859-1"), "utf-8");
        resp.setContentType("text/html;charset=utf-8");
        resp.getWriter().write(name);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

              req.setCharacterEncoding("utf-8");
              String s = req.getParameter("name");
              resp.setContentType("text/html;charset=utf-8");
              resp.getWriter().print(s);
    }
}

注意:要注意处理中文乱码的代码所放位置,如果位置放错,则无效

2.通过Requset对象传递数据。
什么是域对象:在一定范围内,可以存值和取值。
存值:setAttribute(String key,Object obj);
取值:Object obj = getAttribute(String key);
删除值:removeAttribute(String key);

以上是关于javaweb基础——解决请求参数的中文乱码问题的主要内容,如果未能解决你的问题,请参考以下文章

Javaweb的get请求乱码解决

解决javaWeb请求协议中的乱码问题

JavaWeb学习总结(十五)--过滤器的应用

javaweb解决post和get请求方式中文乱码问题(通用)

java编码转换,get请求提交的中文参数乱码

javaweb 解决jsp中${}传递中文值到后端以及get请求中文乱码的问题