• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >JSP > 分享JSP中文乱码解决方法

分享JSP中文乱码解决方法

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-11

通过本文主要向大家介绍了jsp解决中文乱码,jsp中文乱码怎么解决,jsp中解决中文乱码,jsp中文乱码,jsp中文乱码问题等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

一、JSP页面中文乱码

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

先看一个JSP程序:

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

上面这个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> 
</div>

再次运行乱码消失,原理就是向页面指定编码为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> 
</div>

上面这个JSP程序的功能就是通过一个URL链接向自身传递一个参数,这个参数是中文字符串,这个程序的运行效果如下图

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

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

在原来代码中添加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" name="userName" size="10"/> 
        密 码:<input type="password" name="password" size="10"/> 
        <input type="submit" value="提交"> 
      </form>  
    </font> 
  </body> 
</html> 
</div>

在上面的表单当中想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>
</div>

在上面的程序中,如果表单输入没有中文,则可以正常的显示当输入的数据中有中文的时候,得到的结果如图所示。

产生种结果的原因是Tomcat中对于post方法提交的表单采用的默认编码为ISO-8859-1,而这种编码格式不支持中文字符。对于这个问题可以采用转换编码格式的方法来解决,现在对AcceptFromCharset这个页面改动如下:

<%@ 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的值:" + new String(userName.getBytes("ISO-8859-1"), "gb2312")+ "<br>"); 
        out.println("表单输入password的值:" + new String(password.getBytes("ISO-8859-1"), "gb2312")+ "<br>"); 
       %>  
    </font> 
  </body> 
</html> 
</div>

经过这样的转换编码以后,所有的中文输入都可以用request对象正常取出。在上面这个程序中,第四行和第五行是转换编码格式的关键,先从ISO-8859-1格式的字符串中取出字节内容,然后在用GB2312的编码格式重新构造一个新的字符串。这样就可以支持中文变淡输入的正常取值和显示。改进以后程序运行结果如下

经过上面的更改编码格式的处理,表单的中文输入乱码问题已经得到解决。但是如果上面的表单中的输入项不止是两个,那么每个输入项都需要进行编码转换,那样就很麻烦了。这是我们就用到了大名鼎鼎的过滤器filter了。关于这里的内容大致的思虑和上面的一样具体做法请参照笔者的另一篇文章。

四、Eclipse中JSP文件中文乱码

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

对于这个问题我们只需要更改一下Eclipse或者是MyEclipse中对JSP的默认编码就可以了,修改的地方(我的MyEclipse版本为11)如图所示

PS

在Eclipse或者MyEclipse当中JSP文件默认的编码为ISO-8859-1,所以在JSP代码中间如果出现中文就不能保存,例如如下代码

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

修改后在保存的时候会提示如下:

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

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 解决中文乱码的几种解决方法(推荐)
  • JSP中文乱码常见3个例子及其解决方法
  • 分享JSP中文乱码解决方法
  • jsp无法提交nicEdit中的内容的解决方法
  • JSP 传递中文参数的例子
  • JSP动态输出Excel及中文乱码的解决
  • 关于JSP中文问题的解决方法
  • JSP显示中文问题的解决方案

相关文章

  • 2017-05-11JSP由浅入深(9)—— JSP Sessions
  • 2017-05-11(jsp/html)网页上嵌入播放器(常用播放器代码整理)
  • 2017-05-11JSP入门教程之客户端验证、常用输出方式及JSTL基本用法
  • 2017-05-11完美解决jsp页面在IE8下文本模式自动为(杂项Quirks)导致页面显示错位
  • 2017-05-11JSP JavaBean的setProperty属性
  • 2017-05-11JSP动态网站开发环境配置详细方法第1/2页
  • 2017-05-11成为一个成功Jsp程序员的九步
  • 2017-05-11jsp计数器-jsp文件
  • 2017-05-11Struts中的Action 单例与多例详解
  • 2017-05-11JSP的运行内幕

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • jsp给后台带多个参数的方法
    • RMI使用学习 小结
    • SSH整合中 hibernate托管给Spring得到SessionFactory
    • jsp页面中显示word/excel格式的文档的方法
    • jsp输出金字塔的简单实例
    • Tomcat5+Mssql server 2000数据库连接池配置之旅
    • JSP MySQL插入数据时出现中文乱码问题的解决方法
    • JSP语法Page指令
    • jsp传值中文乱码问题解决方法示例介绍
    • jsp页面中如何将时间戳字符串格式化为时间标签

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有