Servlet之浏览器页面出现中文乱码问题

  • Post author:
  • Post category:其他



博主最近在写servlet页面跳转的时候出现了浏览器出现中文乱码的问题,一半是中文,一半是乱码,也是浪费了好多时间才解决这个破问题:




对于单独的一个servlet文件来说,要向页面写中文,只需要在doget 或者dopost 方法的首行加上

response.setCharacterEncoding(“GBK”);

即可解决中文乱码问题,但是对于两个以上的servlet文件来说,如果他们之间发生了数据交互(中文),并且在浏览器上显示就必须保证他们的字符串的编码方式一致才能保证在页面里上显示,以博主遇到的问题为例:


1. 博主有一个登陆html文件,login.html ,一个负责提取login.html表单中的数据并将他们存到session中的文件 loginServlet.java,一个负责显示验证码图片的文件checkcode.java,一个负责提取session中的数据判断用户是否是合法用户显示欢迎界面的 文件 welcome.java。




2.本过程中servlet文件loginservlet与welcome文件发生交互,如果用户输入的验证码正确,则loginservlet —–跳转–> welcome。




3.loginservlet提取loggin.html的表单数据并存到session中,就已经发声明了字符串编码的变化(默认是utf-8的),就是说存到session中的字符串编码就是utf-8的,而我们后期再welcome,java里面要提取这个session中的数据并显示到页面上,因此我们要将提取的数据编码设为gbk的,而不是utf-8的,即在loginservlet中加上这么一句:

request.setCharacterEncoding(“GBK”);

则存在session中的字符串就是gbk编码的了






下面再在welcome.java中加一句:

response.setCharacterEncoding(“GBK”);


就能解决中文乱码的问题了





版权声明:本文为jingjingaibiancheng原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。