每次新建一张JSP页面时,可以先将其编码方式做一修改,可以看到首行有一条编码信息:
<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
可以修改如下:
<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
现在将表单提交到一个Servlet程序中,如果是Post方法提交表单,其解决方法比较简单,可以在程序的实现前对其编码进行设置:
//POST方法中文乱码的解决方法
request.setCharacterEncoding("GBK");
response.setContentType("text/html;charset=GBK");
PrintWriter out = response.getWriter();
然后直接通过
request.getParameter("username")即可解决。
如果采用Get方法,将其设置为GBK还是不行的,必须进行一个强制类型的转换,也就是将获取的字符串用ISO-8859-1进行编码,并将编码存放到一个字节数组中,然后将整个数组转化为字符串对象即可,代码如下
//GET方法中文乱码采用强制转换
String username = request.getParameter("username");
username = new String(username.getBytes("ISO8859-1"),"GBK");
out.print(username);