JavaWeb中文乱码问题解决

本文介绍了如何解决HTTP请求中中文参数出现乱码的问题。对于POST请求,可通过设置request对象的字符编码为UTF-8来避免乱码;而对于GET请求,则需在获取参数后手动将ISO8859-1编码的字符串转换为目标编码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 如果提交方式为post,想不乱码,只需要在服务器端设置request对象的编码即可,客户端以哪种编码提交的,服务器端的request对象就以对应的编码接收,比如客户端是以UTF-8编码提交的,那么服务器端request对象就以UTF-8编码接收

request.setCharacterEncoding("UTF-8")

2. 如果提交方式为get,设置request对象的编码是无效的,request对象还是以默认的ISO8859-1编码接收数据,因此要想不乱码,只能在接收到数据后再手工转换,步骤如下:
  • 获取获取客户端提交上来的数据,得到的是乱码字符串,data=”???è?????”

       String data = request.getParameter("paramName");

  • 查找ISO8859-1码表,得到客户机提交的原始数据的字节数组

       byte[] source = data.getBytes("ISO8859-1");

  • 通过字节数组以指定的编码构建字符串,解决乱码

       data = new String(source, "UTF-8");

      通过字节数组以指定的编码构建字符串,这里指定的编码是根据客户端那边提交数据时使用的字符编码来定的,如果是GB2312,那么就设置成data = new String(source, “GB2312”),如果是UTF-8,那么就设置成data = new String(source, “UTF-8”)

3. URL地址后面如果跟了中文数据,那么中文参数最好使用URL编码进行处理

<a href="${pageContext.request.contextPath}/servlet/RequestDemo05?userName=gacl&name=<%=URLEncoder.encode("思考", "UTF-8")%>">点击</a>

参考链接 https://home.cnblogs.com/u/xdp-gacl/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值