jsp页面中 <meta http-equiv="content-type" content="text/html; charset=UTF-8">通知浏览器以utf-8解码
get请求编码方式和post请求提交编码方式不同,get是把数据直接放到url中,例如以上的uname,IE浏览器先对中文进行utf-8编码(一个中文3个字符表示 太长),继而为了缩短字符又用ISO8859-1编码后传递给服务器。服务器的doGet方法中要先进行ISO8859-1解码再utf-8解码才能看到中文。
而post请求则在浏览器端把数据以utf-8的形式存储到http的请求体中,不用通过url传输,继而只要 request.setCharacterEncoding("utf-8");通知request以utf-8形式解码就行,因为request默认以ISO8859-1进行解码的。
总结:以后在实际的开发中避免不了给页面输出中文数据以及中文的参数。那么以后在处理用户请求的doGet和doPost方法中我们应该一上来直接编写如下三句:
1 response.setCharacterEncoding("utf-8");
2 response.setContentType("text/html;charset=utf-8");
3 request.setCharacterEncoding("utf-8");