🙇?♀?这段时间在学习web开发,有时候servlet里面中文乱码问题着实让人头疼。 今天小编就简单总结一下servlet中文乱码问题,给出一些着实有效的解决方案。
提示:以下是本篇文章正文内容,下面案例可供参考
一、响应体出现乱码(response)
产生原因:谁叫servlet这玩意是英文编写的呢?😂
1,解决response里面字节流中文乱码问题
直接上代码(每一步设置的参数的原因下面都有)
ServletOutputStream os = response.getOutputStream();
os.write("中文1".getBytes("UTF-8"));
response.setHeader("Content-Type", "text/html;charset=UTF-8");
2,解决response里面字符流中文乱码问题
直接上代码(每一步设置的参数的原因下面都有)
response.setHeader("Content-Type", "text/html;charset=UTF-8");
response.setCharacterEncoding("UTF-8");
response.getWriter().print("中文2");
二、请求体出现乱码(response)
😂这个里面的名堂就比较多,得分POST提交和GET提交
1,POST提交
产生原因及解决方案: * 在进行post方式进行提交时,请求体自带一个编码为(ISO-8859-1)的缓冲区 * 解决方案:只需要将字符缓冲区编码方式改为(UTF-8)即可
直接上代码
request.setCharacterEncoding("UTF-8");
String name = request.getParameter("name");
System.out.println("名字(post):"+name);
2,GET提交
产生原因及解决方案: * get方式进行提交 * 提交的信息自动拼接到URI上,进行了一次URL编码(ISO-8859-1) * 解决方案:首先将URL进行一次URL编码(ISO-8859-1) * 在进行一次URL(UTF-8)解码即可
直接上代码
String name = request.getParameter("name");
String string = new String(name.getBytes("ISO-8859-1"),"UTF-8");
System.out.println("名字(get):"+string);
总结
在叠servlet时,因为服务器(例如:tomcat)都是英文的,所以很多时候对中文是相当的不友好,简直要把脸气绿。 我的脸😂 但是,只要我们足够细心(提前编码都UTF-8),乱码就追不上我们的脚步。
小编:薇薇的憨宝
|