JavaWeb 乱码--浅谈

本文主要探讨了JavaWeb中的乱码问题,包括get、post请求及响应乱码的常见情况。针对这些问题,提出了具体的解决策略,如设置服务器配置为UTF-8解码,以及在Servlet中调整请求和响应的编码格式。

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


学习笔记

乱码问题

浏览器的编码格式由当前打开的页面决定,
如果页面中设置了编码格式那么浏览器就使用这个,
如果没有,浏览器使用系统默认的编码
服务器编码格式和解码格式默认就是ISO-8859-1
浏览器的解码格式由当前打开的页面决定

常见的乱码情况

1.浏览器(编码)-请求—>服务器(解码)

2.服务器(编码)-响应—>浏览器(解码)

解决思路
统一编码和解码就可以解决乱码问题

1、get请求乱码

假设浏览器是UTF-8,服务器也要使用UTF-8解码

解决:修改服务器的配置文件,告诉他读取请求参数时使用UTF-8解码

在servers项目中server.xml的中的 给connector标签添加属性 URIEncoding=“UTF-8”

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

此方法只解决了get请求乱码(告诉服务器在解析请求首行时使用UTF-8解析数据)

此方法针对整个工作空间的所有项目,解决了所有的get请求乱码

2、post请求乱码

解决:在使用request对象之前设置解码格式

request.setCharacterEncoding("UTF-8");

此解决方法只针对当前的servlet,每个需要解决post请求乱码的servlet中都需要设置解码格式

3、响应乱码

问题原因:response直接使用ISO-8859-1编码然后交给浏览器

方法1:~~在使用response对象之前设置编码格式
response.setCharacterEncoding(“UTF-8”);只能让字符串不乱码,浏览器还是不知道如何解析页面字符串 ~~

所以方法1并不能解决问题

方法2:在使用response对象之前设置一个响应头,告诉浏览器如何解析页面,告诉response对象如何读取字符串

 response.setHeader("Content-Type", "text/html;charset=Utf-8");//设置响应头
 response.setContentType("text/html;charset=Utf-8");
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值