博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Web--request解决表单参数的中文乱码问题(GET方式和POST方式)
阅读量:2441 次
发布时间:2019-05-10

本文共 2161 字,大约阅读时间需要 7 分钟。

在填写表单数据时,难免会输入中文,如姓名、公司名称等。由于HTML设置了浏览器在传递请求参数时,采用的编码方式是UTF-8,但在解码时采用的是默认的ISO8859-1,因此会导致乱码的出现。

在这里插入图片描述

解决POST方式提交中文乱码

在HttpServletRequest接口中,提供了一个setCharacterEncoding()方法,该方法用于设置request对象的解码方式。

request。setCharacterEncoding("utf-8");

jsp页面:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>    表单    
用户名:
密  码:
爱  好:
唱歌
跳舞
足球

在这里插入图片描述

后台:

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8"); String username = request.getParameter("username"); String password = request.getParameter("password"); System.out.println("用户名:" + username); System.out.println("密码:" + password); //获取参数名为hobby的值 String[] hobbys = request.getParameterValues("hobby"); System.out.println("爱好:"); for (int i = 0; i < hobbys.length; i++) {
System.out.println(hobbys[i] + ", "); } }

点击提交,后台输出:

用户名:张三密码:123456爱好:sing, dance,

从上面的示例可以看出,控制台输出的参数信息没有出现乱码。

需要注意的是: 该 方 式 只 对 P O S T 方 式 有 效 \color{red}{该方式只对POST方式有效} POST,而对GET方式无效。

解决GET方式提交中文乱码

需要在获取到参数后,先用ISO8859-1解码,然后再使用UTF-8编码。

name = new String(name.getBytes("iso8859-1"), "utf-8");

修改表单为GET提交方式:

用户名:
密  码:
爱  好:
唱歌
跳舞
足球

修改后台doGet方法:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String username = request.getParameter("username"); username = new String(username.getBytes("iso8859-1"), "utf-8"); String password = request.getParameter("password"); System.out.println("用户名:" + username); System.out.println("密码:" + password); //获取参数名为hobby的值 String[] hobbys = request.getParameterValues("hobby"); System.out.println("爱好:"); for (int i = 0; i < hobbys.length; i++) {
System.out.println(hobbys[i] + ", "); } }

通过浏览器访问表单页面:

在这里插入图片描述
点击提交,后台输出:

用户名:小明密码:123456爱好:dance, football,

转载地址:http://lnsqb.baihongyu.com/

你可能感兴趣的文章
debian 服务器_使用Debian 10进行初始服务器设置
查看>>
joi 参数验证_使用Joi进行节点API架构验证
查看>>
react-notifications-component,一个强大的React Notifications库
查看>>
如何在Debian 10上设置SSH密钥
查看>>
如何在Debian 10上安装Node.js
查看>>
angular4前后端分离_如何在Angular 4+中使用Apollo客户端GraphQL
查看>>
如何在Ubuntu 18.04上安装Apache Kafka
查看>>
如何在Ubuntu 20.04上安装R [快速入门]
查看>>
debian tomcat_如何在Debian 10上安装Apache Tomcat 9
查看>>
如何为Python 3设置Jupyter Notebook
查看>>
docker 容器共享数据_如何在Docker容器之间共享数据
查看>>
express中间件_创建自己的Express.js中间件
查看>>
如何在Ubuntu 18.04上使用Docker和Caddy远程访问GUI应用程序
查看>>
Apache配置错误AH00558:无法可靠地确定服务器的标准域名
查看>>
apache 证书配置_Apache配置错误AH02572:无法配置至少一个证书和密钥
查看>>
web设置字体粗细css_Web上使用CSS的可变字体
查看>>
css 垂直对齐_CSS垂直对齐属性
查看>>
为您的网站提供动力的100种Jamstack工具,API和服务
查看>>
api restful_构建RESTful API的13种最佳实践
查看>>
wordpress用途_8个热门WordPress多用途主题及其炫酷功能
查看>>