jsp乱码问题全解

    xiaoxiao2021-03-25  97

    ##一、JSP页面中文乱码 在JSP页面中,中文显示乱码两种情况:一种是HTML中的中文乱码,一种是在JSP中动态输出的中文乱码。 jsp页面:

    <%@ page language="java"import="java.util.*"%>

    页面中文,标题中文。运行时,乱码 原因:没有在JSP中指定页面显示的编码,更改如下:

    <%@ page language="java" import="java.util.*" contentType="text/html; charset=GB2312" %>

    再次运行乱码消失,原理是向页面指定编码为GB2312,页面就会按照此编码来显示。 ##二、URL传递参数中文乱码

    <%@ page language="java" import="java.util.*" contentType="text/html;charset=gb2312"%> <html> <head> <title>URL传递参数中文处理示例</title> </head> <% String param = request.getParameter("param"); %> <body> <a href="URLCharset.jsp?param='中文'">请点击这个链接</a><br> 你提交的参数为:<%=param%> </body> </html>

    运行时乱码:。修改Tomcat服务器的配置文件server.xml,设置URIEncoding=“gb2312”即可,重启Tomcat服务器。这个就是向程序指明编码类型。 ##三、表单提交中文乱码 对于表单的数据可以使用request.getParameter(“”)的方法获取,但是当表单中出现中文数据的时候就会出现乱码。 jsp页面1 用户名:密码:提交按钮 jsp页面2

    <% String userName = request.getParameter("userName"); String password = request.getParameter("password"); out.println("表单输入userName的值:" + userName + "<br>"); out.println("表单输入password的值:" + password + "<br>"); %>

    页面1输入中文,页面2结果乱码 原因是Tomcat中对于post方法提交的表单采用的默认编码为ISO-8859-1,而这种编码格式不支持中文字符。所以需要转换编码格式来解决。所以做如下变化:

    <% String userName = request.getParameter("userName"); String password = request.getParameter("password"); out.println("表单输入userName的值:" + new String(userName.getBytes("ISO-8859-1"), "gb2312")+ "<br>"); out.println("表单输入password的值:" + new String(password.getBytes("ISO-8859-1"), "gb2312")+ "<br>"); %>

    先从ISO-8859-1格式的字符串中取出字节内容,然后在用GB2312的编码格式重新构造一个新的字符串来支持中文。 表单的中文输入乱码问题已经得到解决。但如果表单中的输入项不止两个,那么每个输入项都需要进行编码转换,那样就很麻烦了。这时就需要过滤器filter了。 ##四、Eclipse中JSP文件中文乱码 在Eclipse中默认的JSP编码格式为ISO-8859-1,所以当打开由其他编辑器编辑的JSP文件时会出现乱码。 需要更改一下Eclipse对JSP的默认编码就可以了。 注意: 在Eclipse中JSP文件默认的编码为ISO-8859-1,所以在JSP代码中间如果出现中文就不能保存 修改后在保存的时候会提示如下: 现这个提示的原因在于JSP源文件中有ISO=8859-1编码无法识别的中文字符,对于这个问题,解决办法就是在JSP页面中声明页面编码格式即可。添加:pageEncoding=“gb2312”指明了JSP页面编码采用GB2312,这样就可以正常保存JSP的源文件了。

    转载请注明原文地址: https://ju.6miu.com/read-15182.html

    最新回复(0)