以GET方式发送中文参数内容时,得到正常结果。但以POST方式发送中文参数内容,得到“乱码”结果。原因:
浏览器以GET方式发送请求,请求参数保存在【请求头】,在Http请求协议包到达服务器之后,第一件事就是进行解码。请求头二进制内容由Tomcat负责解码,Tomcat9.0默认使用【utf-8】字符集,可以解释一切图形文字,故不会出现乱码情况。
浏览器以POST方式发送请求,请求参数保存在【请求体】,在Http请求协议包到达Http服务器之后,第一件事就是进行解码。请求体二进制内容由当前请求对象【request】负责解码。request默认使用【ISO-8859-1】字符集,【一个东欧语系字符集】。如果此时请求体参数内容是中文,将无法解码只能得到乱码。
解决方案:在POST请求方式下,在读取请求体内容之前,应该通知请求对象使用UTF-8字符集对请求体内容进行一次重新解码。