解决JSP中文乱码

JSP编码设置:

将创建的JSP代码的(默认在第一行)

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
替换成

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
HTML编码设置:

因为JSP中也包含HTML的内容,HTML本身也是有编码格式的。 
将HTML的charset的值改为和JSP编码一致,如UTF-8:



Request中文乱码:

有时候在做jsp逻辑处理时,比如提交表单,从前台注册的页面提交了一部分的数据,但是后面处理的JSP页面通过 request.getParameter 调用时,获取到的是一堆乱码。

这是因为虽然前面JSP设置了编码格式,却没有在当前的JSP中设置读取数据的编码格式。

使用下面的代码,就可以是设置request获取请求内容的数据编码:

request.setCharacterEncoding("utf-8");

URL传参中文乱码:

这里我们需要配置tomcat服务器文件,才能解决这个问题。具体方法是,在tomcat的conf目录下找到server.xml配置文件,找到如下代码:



在后面添加上编码方式,URIEncoding=”gb2312”或者utf-8 重新启动Tomcat问题就解决了。

POST中文乱码:

在Tomcat中,对于以POST方式提交的表单编码格式默认为ISO-8859-1的编码格式,而这种编码格式是不能编码中文的,所以就会出现乱码的现象。对于这种情况,我们可以对表单中的数据进行处理,在取得表单参数的时候设置编码方式,我们更改了我们的接受表单数据的页面如下所示:

<% new String(userName.getBytes("ISO-8859-1"),"gb2312") %>  
1
如:

<%  
    String userName = request.getParameter("userName");  
    String passWord = request.getParameter("password");  
    out.println("表单输入的userName值为:" +  new String(userName.getBytes("ISO-8859-1"),"gb2312")+"
");  
    out.println("表单输入的pasword值为:" + new String(passWord.getBytes("ISO-8859-1"),"gb2312")+"
");  
 %>  
--------------------- 
作者:bin25 
来源:CSDN 
原文:https://blog.csdn.net/bin25/article/details/78060691 
版权声明:本文为博主原创文章,转载请附上博文链接!

你可能感兴趣的:(Java)