JSP呈现中文乱码问题办理要领详解

在先容要领之前我们首先应该清楚详细的问题有哪些,笔者在本博客傍边阐述的JSP中文乱码问题有如下几个方面:页面乱码、参数乱码、表单乱码、源文件乱码。下面来逐一办理个中的乱码问题。

一、JSP页面中文乱码

在JSP页面中,中文显示乱码有两种环境:一种是HTML中的中文乱码,另一种是在JSP中动态输出的中文乱码。

先看一个JSP措施:

<%@ page language="java" import="java.util.*" %> <html> <head> <title>中文显示示例</title> </head> <body> 这是一其中文显示示例: <% String str = "中文"; out.print(str); %> </body> </html>

上面这个JSP措施看起来仿佛是在页面显示几句中文并且标题也是中文。运行后在欣赏器中显示如图所示

JSP泛起中文乱码问题治理方式详解

原因在于没有在JSP中指定页面显示的编码,消除乱码的办理方案很简朴上面代码中page呼吁修改成如下所示即可

<%@ page language="java" import="java.util.*" contentType="text/html; charset=GB2312" %> <html> <head> <title>中文显示示例</title> </head> <body> 这是一其中文显示示例: <% String str = "中文"; out.print(str); %> </body> </html>

再次运行乱码消失,道理就是向页面指定编码为GB2312,那么页面就会凭据此编码来显示,于是乱码消失。

二、URL通报参数中文乱码

一般环境下在利用get要领提交表单的时候通报的参数假如是中文的话很大概会呈现乱码。

下面是一个示例措施

<%@ 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>

上面这个JSP措施的成果就是通过一个URL链接向自身通报一个参数,这个参数是中文字符串,这个措施的运行结果如下图

JSP泛起中文乱码问题治理方式详解

对付URL通报中文参数乱码这个问题,其处理惩罚要领较量非凡,仅仅转换这其中文字符串可能配置JSP页面显示编码都是不能办理问题的,需要修改Tomcat处事器的设置文件才气办理问题。在这里修改Tomcat的conf目次下的server.xml设置文件,详细改后的代码如下

<Connector port="8080" protocol="HTTP/1.1" URIEncoding="gb2312" connectionTimeout="20000" redirectPort="8443" />

在本来代码中添加URI编码配置URIEncoding=“gb2312”即可,重启Tomcat处事器可以获得正确的页面。其道理也和上面的环境雷同,就是向措施指明编码范例,然后显示就正常了。

三、表单提交中文乱码

对付表单的数据可以利用request.getParameter(“”)的要领获取,可是当表单中呈现中文数据的时候就会呈现乱码。

示例代码如下

<%@ page language="java" import="java.util.*" contentType="text/html;charset=gb2312"%> <html> <head> <title>Form中文处理惩罚示例</title> </head> <body> <font size="2"> 下面是表单内容: <form action="AcceptFormCharset.jsp" method="post"> 用户名:<input type="text" size="10"/> 密 码:<input type="password" size="10"/> <input type="submit" value="提交"> </form> </font> </body> </html>

在上面的表单傍边想AcceptFormCharset这个页面提价两项数据,下面是AcceptFormCharset.jsp的内容:

<%@ page language="java" import="java.util.*" contentType="text/html;charset=gb2312"%> <html> <head> <title>Form中文乱码</title> </head> <body> <font size="2"> 下面是表单提交今后用request取到的表单数据:<br> <% String userName = request.getParameter("userName"); String password = request.getParameter("password"); out.println("表单输入userName的值:" + userName + "<br>"); out.println("表单输入password的值:" + password + "<br>"); %> </font> </body> </html>

在上面的措施中,假如表单输入没有中文,则可以正常的显示当输入的数据中有中文的时候,获得的功效如图所示。

JSP泛起中文乱码问题治理方式详解

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wsddjp.html