乱码的原因:
由于编码与解码的字符集不一致时,会出现乱码问题。
编码: 将字符转换为二进制的过程称之为编码
解码: 将二进制转换为字符的过程称之为解码
默认编码与解码:
服务器的默认编码与解码是一致,都是:ISO-8859-1
- 浏览器默认编码:
<meta charset="UTF-8">
- 默认解码:GBK
解决乱码:
请求乱码(浏览器->服务器):
get请求:
因为get请求没有请求体,数据是在浏览器的url中传递的,所以我们要找到服务器的配置文件夹conf找到里面的service.xml,在端口号后面加一个属性URIEncoding=“UTF-8”
例:<Connector connectionTimeout="20000" port="8080" URIEncoding="UTF-8"/>
post请求:
在servlet文件的doget()方法中用response调用setCharacterEncoding(“UTF-8”)方法。
例:
request.setCharacterEncoding("UTF-8");
响应乱码(服务器->浏览器):
方法①:
response.setCharacterEncoding("GBK");
//当然啦,这种方法不常用。
方法②:
response.setContentType(“text/html;charset=UTF-8”);
总结:
其实为了避免乱码我们可以直接写上这两句话即可。当然啦也不要忘啦在conf/service.xml中将get请求改成UTF-8
即:
<Connector connectionTimeout="20000" port="8080" URIEncoding="UTF-8"/>
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");