宝哥软件园

分享JSP中文乱码解决方案

编辑:宝哥软件园 来源:互联网 时间:2021-09-09

1.JSP页面上的中文乱码

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

先看一个JSP程序:

% @ page language=' Java ' import=' Java . util . * % html head title中文显示示例/title /head body这是中文显示示例:% String str=' Chineseout . print(str);%/body/html上面的JSP程序看起来像是在页面上显示了几个中文单词,标题也是中文。运行后,会显示在浏览器中,如下图所示

原因是JSP中没有指定页面显示代码,消除乱码的解决方案非常简单。上面代码中的page命令可以修改如下

% @ page language=' Java ' import=' Java . util . * ' ContentType=' text/html;Charset=GB2312'% html标题中文显示示例/标题/标题正文这是一个中文显示示例:% String str=' Chineseout . print(str);% /body /html再次运行,乱码字符消失。原理是将代码赋给页面为GB2312,然后页面会按照这个代码显示,这样乱码字符就消失了。

二是网址传输参数中文乱码

一般来说,使用get方法提交表单时,传递的参数如果是中文的,很可能会出现乱码。

以下是一个示例程序

% @ page language=' Java ' import=' Java . util . * ' ContentType=' text/html;charset=GB 2312 ' % html head title URL传递参数中文处理示例/title/head % string param=request . getparameter(' param ');% body a href='URLCharset.jsp?参数=“中文”请点击此链接。您提交的参数是:%=param% /body /html。上面JSP程序的功能是通过URL链接将参数传递给自己。这个参数是一个中文字符串。该程序的运行效果如下

对于URL传输的中文参数乱码问题,其处理方法相当特殊。仅仅转换这个中文字符串或者设置JSP页面显示代码并不能解决问题,需要修改Tomcat服务器的配置文件才能解决问题。在这里修改Tomcat的conf目录下的server.xml配置文件。修改后的具体代码如下

连接器端口=' 8080 '协议=' http/1.1' URI编码=' gb2312 ' connection time out=' 20000 '重定向端口=' 8443 '/将URI编码添加到原始代码中并设置uri编码=' GB 2312 ',然后重新启动Tomcat服务器以获取正确的页面。原理和上面的情况差不多,就是给程序注明编码类型,然后显示就会正常了。

第三,提交的表格是中文乱码

表单的数据可以通过request.getParameter(" ")的方法获取,但是当表单中出现中文数据时,就会出现乱码字符。

示例代码如下

% @ page language=' Java ' import=' Java . util . * ' ContentType=' text/html;charset=GB 2312 ' % html Head title form中文处理示例/title/Head body font size='2 '这里是表单内容:formaction=' accept formcharset . JSP ' method=' post ' username:input type=' text ' name=' username ' size=' 10 '/Secret code:input type=' password ' name=' password ' size=' 10 '/input type=' submit ' value=' submit '/form/font/body/html以上表单,我想提高这个的价格下面是AcceptFormCharset.jsp的内容:

% @ page language=' Java ' import=' Java . util . * ' ContentType=' text/html;charset=GB 2312 ' % html head title form中文乱码/title /head body font size='2 '以下是表单提交后通过请求获得的表单数据:br % string username=request . getparameter(' username ');string password=request . GetParameter(' password ');Out.println('表单输入用户名值: ' userName ' br ');Out.println('表单输入密码的值为: ' password ' br ');% /font /body /html以上程序,如果表单中没有中文输入,可以正常显示。当输入数据中有中文时,结果如图所示。

出现这种结果的原因是Tomcat中对post方法提交的表单使用的默认编码是ISO-8859-1,这种编码格式不支持汉字。为了解决这个问题,我们可以使用转换编码格式的方法。现在,AcceptFromCharset的页面更改如下:

% @ page language=' Java ' import=' Java . util . * ' ContentType=' text/html;charset=GB 2312 ' % html head title form中文乱码/title /head body font size='2 '以下是表单提交后通过请求获得的表单数据:br % string username=request . getparameter(' username ');string password=request . GetParameter(' password ');Out.println ('form,输入userName : '新字符串的值(username.getbytes ('iso-8859-1 ',' GB 2312 ')' br ');Out.println ('form,输入password : '新字符串的值(password.getbytes ('iso-8859-1 ',' GB 2312 ')' br ');%/font/body/html html经过这样的转换和编码后,所有的中文输入都可以正常的用请求对象获取。在上面的程序中,第四行和第五行是转换编码格式的关键。首先,从ISO-8859-1格式的字符串中取出字节内容,然后以GB2312编码格式重构一个新的字符串。这样就可以支持中文淡化输入的正常值和显示。改进后,程序运行如下

经过上述改变编码格式的处理,解决了表单中文输入乱码的问题。但是如果上面表格中有两个以上的条目,那么每个条目都需要编码转换,非常麻烦。这是我们使用著名过滤器的时候。关于这里内容的大致思路,具体方法同上,请参考作者的另一篇文章。

第四,Eclipse中中文乱码的JSP文件

在Eclipse或MyEclipse中,由于默认的JSP编码格式为ISO-8859-1,所以打开其他编辑器编辑的JSP文件时会出现乱码,如图

对于这个问题,我们只需要在Eclipse或MyEclipse中更改JSP的默认编码。修改的地方(我的MyEclipse版本是11)如图所示

附言(同postscript);警官(police sergeant)

在Eclipse或MyEclipse中,JSP文件的默认编码是ISO-8859-1,所以如果JSP代码中间出现中文,就无法保存,比如下面的代码

% @ page language=' Java ' import=' Java . util . * % html head title中文显示示例/title /head body这是中文显示示例:% String str=' Chineseout . print(str);修改后保存时会提示% /body /html,如下所示:

出现此提示的原因是JSP源文件中存在ISO=8859-1编码无法识别的汉字。对于这个问题,解决方法是在JSP页面中声明页面编码格式。声明后的代码如下:

% @ page language=' Java ' import=' Java . util . * ' page coding=' GB 2312 ' % html head title中文显示示例/title /head body这是中文显示示例:% String str=' Chineseout . print(str);第一行的%/body/html page encoding=“GB2312”表示JSP页面编码采用了GB 2312,可以正常保存JSP的源文件。

以上就是本文所描述的全部内容,希望大家能够喜欢。

请花一点时间与你的朋友分享这篇文章或留下评论。我们将真诚感谢您的支持!

更多资讯
游戏推荐
更多+