解决JSP中使用GET传递中文的乱码问题

来源 :硅谷 | 被引量 : 0次 | 上传用户:caressliu
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  [摘要]众所周知,在程序中对汉字的处理有好多种编码方式。由于各个编码方式的不同,在程序中如何保证传递和接受汉字编码的统一性就显得尤为重要。在JSP的程序中虽然我们可以在很多地方设置我们统一的编码格式(如:GBK或GB2312),但仍然不能有效解决通过GET方法传递汉字时所出现的乱码问题。从乱码产生的原理入手对几种解决JSP乱码的方法进行分析和对比,希望能够帮助读者更好地解决该问题。
  [关键词]JSP GET 乱码
  中图分类号:TP3文献标识码:A 文章编号:1671-7597 (2008) 0210049-01
  
  一、通过GET进行参数传递的时候出现乱码的情况
  1.表单提交的数据,用request.getParameter("xxx")返回的字符串为乱码或者?
  2.直接通过url如http://localhost/a.jsp?name=中国,这样的get请求在服务端用request.getParameter("name")时返回的是乱码。
  无论我们使用request.setCharacterEncoding();还是使用网上盛传的SetCharacterEncodingFilter过滤器,都无法解决get请求的中文参数乱码问题它们只对post方法提交的表单有作用。
  还有人用另一种办法,那就是newString(xxx.getBytes("ISO-8859-1"),"gbk")来逆向编码。这种方法虽然可以暂时解决乱码问题,但是这种方法如果硬性的写到了代码中,对于以后的部署十分不利。假设部署到了一台URIEncoding="GBK"的tomcat上,那么乱码问题还会出现。
  那么如何解决这个问题呢,我们先来看一下通过GET传递中文产生乱码的原因:
  1.tomcat的j2ee实现对表单提交即post方式提示时处理参数采用缺省的iso-8859-1来处理。
  2.tomcat对get方式提交的请求对query-string处理时采用了和post方法不一样的处理方式。(与tomcat4不一样,所以设置setCharacterEncoding("GBK"))不起作用。
  二、两种解决方案
  首先所有的jsp文件都加上:
  1.实现一个Filter.设置处理字符集为GBK。(在tomcat的webapps/servlet-examples目录有一个完整的例子。请参考web.xml和SetCharacterEncodingFilter的配置。)
  (1)只要把%TOMCAT安装目录%/webapps\servlets-examples\WEB-INF\classes\filters\SetCharacterEncodingFilter.class文件拷到你的WEB-INF\classes目录filters下,如果没有filters目录,就创建一个。
  (2)在你的web.xml里加入如下几行:
  <filter>
  <filter-name>SetCharacterEncoding</filter-name>
  <filter-class>filters.SetCharacterEncodingFilter</filter-class>
  <init-param>
  <param-name>encoding</param-name>
  <param-value>GBK</param-value>
  </init-param>
  </filter>
  <filter-mapping>
  <filter-name>SetCharacterEncoding</filter-name>
  <url-pattern>/*</url-pattern>
  </filter-mapping>
  (3)完成。
  2.GET方式的解决办法
  (1)打开tomcat的server.xml文件,找到区块,加入如下一行:
  
  注:本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文。
其他文献
[摘要]叙述 Java语言的出现背景、主要特点、发展历程以及Java技术的应用,指出 Java 是当今IT产业和人类文明的创新和希望。  [关键词]Java 语言 技术  中图分类号:TP3文献标识码:A 文章编号:1671-7597 (2008) 0210021-01    一、Java语言的出现  自从1946年世界上第一台电子计算机问世以来,计算模式的发展经历了三个阶段:集中计算模式、分散计
期刊
[摘要]介绍基于MVC模式的成绩管理系统,解释MVC模式,阐述系统的功能模块、突出特点和应用前景。  [关键词]MVC 成绩管理系统  中图分类号:TP3 文献标识码:A文章编号:1671-7597 (2008) 0210030-02    一、引言  近年来,网络技术的日益普及推动了学校信息化的加速发展,使高校教学与管理的模式逐步由传统的面对面、人工作业过渡到基于网络的教学管理平台。考虑到英语教
期刊
[摘要]J2EE体系结构提供中间层集成框架用来满足无需太多费用而又需要高可用性、高可靠性以及可扩展性的应用的需求。通过提供统一的开发平台,J2EE降低了开发多层应用的费用和复杂性,同时提供对现有应用程序集成强有力支持,完全支持Enterprise JavaBeans,有良好的向导支持打包和部署应用,添加目录支持,增强了安全机制,提高了性能。  [关键词]J2EE 结构 优势  中图分类号:TP3
期刊
[摘要]Java编程中,在遇到对象存取问题时,传统方法采用以Object类为中介,进行类型转换,导致代码可读性差,并常常导致出现运行时的转型异常,且该类错误很难在编译期被发现。采用Java的泛型机制,可以极大的提高程序的可读性与安全性,使程序得以正常运行。  [关键词]Java 泛型 转型   中图分类号:TP3文献标识码:A 文章编号:1671-7597 (2008) 0210022-02   
期刊
[摘要]电力供电系统的安全性、可靠性是保证用电安全,保障经济顺利发展的基本条件。但实际操作中由于供电系统送电覆盖范围辽阔,所经地域环境气候复杂,且存在人为的一些不确定性因素,导致供电系统故障难以避免。探讨110KV供电系统发生故障条件下的继电保护作用问题,希望能够对增强供电系统的安全性和可靠性有所帮助。  [关键词]110KV 供电系统 继电保护 作用   中图分类号:TM7 文献标识码:A 文章
期刊
[摘要]所谓组播就是指定范围的广播,比如说netmeeting就是组播的应用。而泛播是则是v6的概念,主要是指在同一个自治系统内的广播,它比较特殊,它要求所有的路由器记录源地址。对ipv6中的组播和泛播从各方面进行分析和阐述,希望使读者对ipv6中的这两种特殊的广播形式有更深的理解。  [关键词]ipv6 组播 泛播 广播  中图分类号:G22文献标识码:A 文章编号:1671-7597 (200
期刊
[摘要]通过对VFP数据库加密方法的探讨分析,让读者对固定密码、简单加密的固定密码和简单加密变化的密码这三种传统的密码加密方法进行了深入比较。  [关键词]VFP 数据库 加密 随机伪码  中图分类号:TP3 文献标识码:A 文章编号:1671-7597 (2008) 0210024-01    随着计算机科学技术的发展与普及,特别是计算机在政府机关、企业单位、媒体学校等广泛应用,计算机信息安全已
期刊
[摘要]Visual Basic是一门开发Windows应用程序很好的一种语言,使用它能够开发出大型的应用系统。它具有访问各种数据库的功能。用Visual Basic访问数据库有许多可供选择的方案,但是选择那种方案更能使开发队伍和应用软件在当前处于有利位置并且适应将来的发展方向呢?这些解决方案各有什么特点?介绍几种Visual Basic访问数据库的方法,对这些数据接口的性能进行了比较,并提出相互
期刊
2006年,谢峰、马可、计文波连续登陆巴黎和米兰时装周,模特杜鹃也登上了《时代》杂志封面,令当时的中国时尚圈初露春意。  2010年,Uma Wang、Masha Ma等一批非常年轻的中国设计师在国际舞台崭露头角,他们活在全球语境下,不再被“中国元素”所束缚,是中国设计师融入西方时装工业体系的集体发力。  2013年,彭丽媛随行出访,国际“首秀”引发了媒体与公众对本土品牌广泛而热烈的关注和追捧,例
期刊
一、引言  有人说:“C语言早过时了,现在都用C++、Java了C真的过时了吗?没有!C语言不但没过时,而且依然是一门非常重要的基础语言。首先,C语言是其它高级语言基础,C++的核心基础是C,Java的基本语法、基本数据结构和基本控制结构都和C语言类似,学好C语言的基本语法对于学习高级语言起到非常重要的作用。其次,C的适用范围非常广,几乎所有的硬件驱动、网络通信、快速数据处理等都涉及到C语言,甚至
期刊