本文共 1249 字,大约阅读时间需要 4 分钟。
Servlet中文参数乱码问题
out.println方法在默认情况下,会使用"iso-8859-1"来编码。
(2)如何解决
response.setContentType("text/html;charset=utf-8");
注意:
a,charset=utf-8:用来指定编码格式,只要支持中文即可,比如:gbk
b,作用有两个
第一:生产一个content-type消息头,告诉浏览器返回的数据类型和编码格式.
第二:服务器在输出时,会使用指定的编码格式进行编码.
因为当提交表单时,浏览器会对表单中的数据进行编码(会使用打开表单时的编码格式进行编码),而服务器默认情况下,会使用iso-8859-1去解码,所以,会产生乱码问题。
编码方式不一致时,就会出现乱码。
(2)如何解决
解决方式1:
step1,先保证表单所在页面按照指定的编码格式打开。使用<meta http-equiv="content-type" content="text/html;charset=utf-8">
step2,调用request.setCharacterEncoding("utf-8");意思是告诉服务器,使用指定的编码格式进行解码.
注:该方法只适用于post请求.
解决方式2:
step1,同上
step2,使用new String(str.getBytes("iso-8859-1"),"utf-8");注:先还原得到浏览器发送过来的字节数组,然后使用正确的字符集来解码。
(1)java语言在内存当中,会使用"unicode"编码格式(字符集)来保存字符。
(2)编码:把unicode这种编码格式对应的字节数组转换成某种本地编码的格式(比如 gbk)对应的字节数组。 unicode ---> gbk
(3)解码:把某种本地编码格式的字节数组转换成unicode这种编码格式对应的字节数组。
(4)如果servlet要输出中文,需要调用response.setContentType(“text/html;charset=utf-8”);
(5)如果表单有中文参数值,也需要注意编码问题
转载地址:http://owrws.baihongyu.com/