name:

jsp页面传值中文乱码 网页乱码 jsp过滤器过滤乱码等乱码处理办法

一、jsp页面间传值中文乱码问题解决办法
<%@ page language="java" import="java.util.*" pageEncoding="GB2312"%> <form action="b.jsp">
name:<input type=text name=name>
<input type=submit>
</form>
b.jsp页面内容:
<%@ page language="java" import="java.util.*" pageEncoding="GB2312"%> <%
String name=request.getParameter("name");
%>
<body>
<%=name%>
</body>
现象:中文乱码,比如“??????”
解决方法如下:
方法一:
1. 在b.jsp中把pageEncoding="GB2312"改为
pageEncoding="ISO885Array-1"
虽然这样b.jsp页面显示的内容还是乱码,但是不是那种“??????”的乱码,而是一些特殊字符
2. 然后在浏览器中查看菜单中修改成GB2312的编码,这时乱码就显示中文了。

3. 但是这种方法是不可行的。

方法二:( 已经验证可行)
1. 在b.jsp中把String name=request.getParameter("name");修改为
String name=new String(request.getParameter("name").getBytes("ISO-885 Array-1"),"GB2312");
2. 这时再在页面上显示,则就是中文了。

方法三:
1. 有人说修改get/post的传值方式,但是这是有前提的,如果只是把get方式修改成post方式,页面结果还是乱码!
2. 前提你必须配置了过滤器,若果你只是配置了过滤器,则传值方式必须是:post 方式才不是乱码,如果是get方式照样是乱码!
3. 过滤器的配置,我想大家都能有,我就不说了
方法四:
1. 有人说配置tomcat的配置文件server.xml里这句:
<Connector URIEncoding="GB2312"
port="8080" maxHttpHeaderSize="81Array2"
maxThreads="150" minSpareThreads="25" maxSpareThreads= "75"
enableLookups="false" redirectPort="8443" acceptCount= "100"
connectionTimeout="20000" disableUploadTimeout="true" />
加上这句:URIEncoding="GB2312"
2. 虽然可以但是有前提的,若果你过滤器没有配置,则只是配置了server.xml文件,这样只有在表单是get传值时候才可以!当是post方式时,照样是乱码!
*这时我们就可以看出在tomcat5中的post与get传值方式是不一样的*
*有人要问有没有一种方法让传值使用get方式或post方式都好用呢,下面就是我推荐的方法五*
方法五:
1. 其实很简单,就是同时实现方法三又实现方法四!
2. 就是先配置过滤器,又配置server.xml文件,都设置成GB2312的编码
3. 这样无论是post还是get方式的表单传值,中文都不会是乱码!
二、severlet 返回页面的中文乱码问题解决办法
response.setContentType("text/html;charset=utf-8");
request.setCharacterEncoding("utf-8");
(注:顺序不可变)
三、ajax 中文参数乱码问题解决办法
比如var result="张凯<CN=张凯/OU=公司领导/OU=公司本部/O=Geph>";
因该参数包括着<,中文等字符,所以在ajax传输该参数时需
要 encodeURI(result)来两次编码,后台用
URLDecoder.decode(cityName, "utf-8");来解码
这个可以解决传递中文参数乱码问题。

四、Struts2文件下载时,如果所下载的文件名是中文时,就会出现乱码。

解决办法如下:
步奏1:修改fileName属性的set方法
public void setFileName(String fileName)
throws UnsupportedEncodingException {
this.fileName = new String(fileName.getBytes("ISO8859-1"), "utf-8"); }
步骤2:在getInputStream()方法中加上下面一句
ServletActionContext.getResponse().setHeader("Content-Disposition","a ttachment;fileName="+.URLEncoder.encode(fileName, "UTF
注:目前只整理了这些,还有待增加完善。

合集下载

JSP中乱码问题

JSP中乱码问题

1.中文乱码问题,首先得需要确定的是,数据库的默认编码要
设置正确,一般设为gb2312.
2.JSP中文乱码问题之一:调用JSP页面显示乱码
通过浏览器调用JSP页面,在客户端浏览器中所有的中文内容出现乱码。

解决方案:
首先确认本JSP在编辑器中保存时,使用的是GB2312(或GBK)的编码格式,然后在JSP页面的开始部分添加
<%@ pageEncoding=”GBK”%>就可以解决中文乱码问题。

3.JSP中文乱码问题之二:调用Servlet页面显示乱码
调用Servlet,Servlet在浏览器中显示内容出现乱码
解决方案:
在Servlet使用response在输出内容之前,先执行response.setContentType(”text/html; chatset=GBK”),设定输出内容编码为GBK,注意的是这句话放在方法的第一行。

4.JSP中文乱码问题之三:post表单传递参数乱码
通过JSP页面、HTML页面或者Servlet中的表单元素提交参数给对应的JSP页面或者Servlet而JSP页面或者Servlet接收的中文参数值乱码
解决方案:
在接收post提交的参数之前,使用request.setCharacterEncoding(“GBK”),设定接收参数的内容使
用GBK编码。

如何处理JSP开发容易出现的中文乱码问题

如何处理JSP开发容易出现的中文乱码问题

在java编程中,经常会碰到汉字的处理及显示问题,一不小心就会产生一大堆乱码或问号,这也是让许多初学者手足无措的讨厌问题。

造成这种问题的根本原因是java中默认的编码方式是Unicode,而中国人通常使用的文件和DB都是基于GB2312或者big5等编码,固会出现此问题。

对于中文问题,不同的jdk版本,不同的应用服务器,处理方法都会有一些微小的差异。

在这里,主要针对Tomcat中JSP开发容易出现的中文乱码问题进行讨论,当然,大多数解决方法是通用的。

一般有以下几种情况:1、JSP输出中文的乱码问题所谓在JSP输出中文,即直接在JSP中输出中文,或者给变量赋中文值再输出等,这种情况下的乱码问题往往是因为没有给JSP页面制定显示字符的编码方式,解决方法如下:(1)在JSP页面头部加上语句<% @ page contentType=”text/html;charset=utf-8”%>(在servlet 中使用httpServletResponse.setContentType(“text/html; charset=utf-8”)),最好同时在JSP页面的head部分加上<meta http-equiv=”Content-Type”content=”text/html;charset=utf-8”>。

(2)在每次要输出中文的地方主动转换编码方式,比如要在页面中输入“中文”二字,就可以用以下方法:<%String str = “中文”;Byte[] tmpbyte = str.getBytes(“ISO8859_1”);str = new String(tmpbyte);out.print(str);2、获取表单提交的数据时的中文乱码问题在没有加任何其他处理之前,用request.getParameter(“paramName”)获取表单提交中的数据,且表单数据中含有中文时,返回的字符串会呈现乱码。

JSP中文乱码问题解决方案

JSP中文乱码问题解决方案

JSP中文乱码问题解决方案中文乱码就是因为编码不符,可能出现乱码有四个地方:1 JSP编码乱码2 HTML编码乱码3 request获取数据乱码4 response输出信息乱码5 Cookie导致的编码问题下面将会对上面几种情况进行介绍:1 JSP乱码这种是最常见的,设置编码的位置位于JSP的第一行,如果在Eclipse中新建一个JSP默认是下面这种:<%@ page language="java"contentType="text/html; charset=ISO-8859-1"pageE ncoding="ISO-8859-1"%>可以看到它默认的页面编码和传输编码都是ISO-8859-1,这是用于欧洲国家的编码。

可以通过设置Eclipse中JSP的编码格式,来修改默认生成的编码格式。

如果想要支持中文,可以使用UTF-8、GB2312、GBK等,其中UTF-8是国际化的,哪个国家的都支持,所以推荐使用这个。

再来说说上面涉及到编码的两个地方:charset 和pageEncodingcharset是指服务器发往客户端展现时的编码;pageEncoding用于设置JSP页面本身的编码。

JSP在部署后提供给用户使用,会经过三个阶段:(1)JSP生成java文件:这个阶段会使用pageEncoding所定义的编码格式进行转换(2)java文件生成class文件:这个阶段由服务器tomcat自动使用utf -8编码把java文件转换成字节码class文件(3)通过读取class文件展现给用户:这个阶段由tomcat服务器获取字节码内容,通过使用contentType所定义的编码格式展现给用户。

大致过程如下图:这样设置好JSP中的第一行代码,就可以保证基本的JSP展现没有乱码了!<%@ page language="java"contentType="text/html; charset=UTF-8"pageEncodi ng="UTF-8"%>2 HTML乱码因为JSP中也包含html的内容,HTML本身也是有编码格式的。

jsp中文编码乱码的分析与解决

jsp中文编码乱码的分析与解决

jsp中文编码乱码的分析与解决摘要jsp技术目前普遍应用于网络编程,java在中文处理方面经常出现乱码现象。

本文从分析各种常见的jsp页面中文乱码产生的原因入手,并给出该乱码的解决方案。

经过多次实践,基本可以解决常见jsp页面常见的中文乱码问题,有着很好的广泛性。

关键词网络编程;中文乱码;jsp页面编码0引言JSP(Java Server Pages)是由Sun公司倡导、许多公司参与一起建立的一种动态网页技术标准,jsp技术采用java作为开发脚本语言,java本身有着很好的跨平台性,但是jsp在结合页面技术后,最使人头疼的一个问题就是不能很好的处理中文乱码问题,在开发过程中带来诸多不便,本文从剖析中文乱码产生的各种原因入手,并给出相应的解决方案。

1中文乱码的根源1)中文的编码很多,在不同的情况下可能有多种不同的二进制值;2)在某些应用中传递数据时,可能把中文转换成其它形式;3)在一个应用系统中,编码之间存在各种各样的转换;4)在转换过程中需要制定编码方式;5)在具体实践过程中,可能忽略或忘记设置编码;6)不同的软件环境其编码设置方式不同也容易导致中文乱码;7)编码工具的多样性以及对编码的模糊认识不清。

2常见的jsp页面中文乱码网上常出现的JSP/Servlet encoding 问题一般都表现在browser 或应用程序端,如:浏览器中看到的Jsp/Servlet 页面中的汉字怎么都成了‘?’;浏览器中看到的Servlet 页面中的汉字怎么都成了乱码;JA V A 应用程序界面中的汉字怎么都成了方块;Jsp/Servlet 页面无法显示GBK 汉字;Jsp/Servlet 不能接收form 提交的汉字;JSP/Servlet 数据库读写无法获得正确的内容。

3 中文乱码产生原因分析1)在jsp中如果指定了,那么在该jsp中所有用到的数据,如果沒有指定编码,那么这些数据的编码方式为A。

从request得到的数据如果没有指定request的编码的话,默认编码为iso-8859-1。

中文乱码解决方案

中文乱码解决方案

在进行struts开发的过程中,总也是出现很多的乱码问题,但归根到底,也只是以下三种情况:㈠页面显示中文乱码㈡传递参数中文乱码㈢国际化资源文件乱码下面就这三中情况介绍怎么在具体项目中处理这些乱码问题。

而对于整体的处理思想,是要统一编码为: UTF-8.(以myeclipse6支持的struts1.3为准)㈠页面显示中文乱码对于在页面中显示出现乱码,这个问题比较简单,便是检查你的JSP文件里是不是出现了中文要处理,因为JSP默认的编码格式为“ISO-8859-1”,当JSP中出现要处理的中文时,其显示就出现乱码了,这种情况一般出现在手写JSP,或修改时。

因为在myeclipse6.0中,如果出现了编码错误时,程序不会让你保存,而是会提示你注意编码,这点很好。

具体的修改办法是把Html代码1.<%.@ page language="java"import="java.util."pageEncoding="ISO-8859-1">改成:Html代码<%.@ page language="java"import="java.util."pageEncoding="UTF-8">㈡传递参数中文乱码传递参数出现的乱码,参数的内容为中文。

比如在struts应用中,简单的一个登录界面中,需要传递的登录名为中文时,你没经处理之前,是会出现乱码传递的,为了让我们能看到显示的乱码,我们在对应的Action类的子类里,修改一下,用System.out把接受到的参数输出,代码如下:Java代码1.public ActionForward execute(ActionMapping mapping, ActionFormform, HttpServletRequest request,2. HttpServletResponse response) ...{3. DynaActionForm loginForm = (DynaActionForm) form;4.5. String username = (String) loginForm.get("username");6. String password = (String) loginForm.get("password");7. System.out.println("username:"+username);8. System.out.println("password:"+password);9. if (username.equals("ivorytower") && password.equals("123456")) ...{10. return mapping.findForward("success");11. }12. return mapping.findForward("fail");13. }那么当你提交了中文输入后就会出现乱码了。

jsp中文乱码问题[jsp中文页面乱码与传参乱码]

jsp中文乱码问题[jsp中文页面乱码与传参乱码]

页面乱码这种乱码的原因是应为没有在页面里指定使用的字符集编码,解决方法:只要在页面开始地方用下面代码指定字符集编码即可代码如下数据库乱码这种乱码会使你插入数据库的中文变成乱码,或者读出显示时也是乱码,解决方法如下:在数据库连接字符串中加入编码字符集代码如下 String Url="jdbc:myql://localhot/digitgulfuer=root&paword=root&ueUnicode=true&characterEncoding=GB2312";并在页面中使用如下代码:代码如下 repone.etContentType("te某t/html;charet=gb2312"); requet.etCharacterEncoding("gb2312");URL传值乱码方法一:1. 在b.jp中把pageEncoding="GB2312"改为pageEncoding="ISO8859-1"虽然这样b.jp页面显示的内容还是乱码,但是不是那种“ ”的乱码,而是一些特殊字符2. 然后在浏览器中查看菜单中修改成GB2312的编码,这时乱码就显示中文了。

3. 但是这种方法是不可行的。

方法二:1. 在b.jp中把代码如下 String name=requet.getParameter("name");修改为代码如下 String name=new String(requet.getParameter("name").getByte("ISO-8859-1"),"GB2312");2. 这时再在页面上显示,则就是中文了。

方法三:在请求页面的请求参数需要用encodeURI进行转码,然后在接收请求的页面需要进行字符集转换。

jsp页面显示中文乱码解决

jsp页面显示中文乱码:jsp页面的编码方式有两个地方需要设置:<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%><%@ page contentType="text/html;charset=utf-8"%>其中:pageEncoding 指的是jsp文件本身在本地保存时的编码方式。

contentType的charset 是指服务器发送网页内容给客户端时所使用的编码。

从第一次访问一个jsp页面开始,到这个页面被发送到客户端,这个Jsp页面要经过三次编码转换:第一阶段是jsp编译成.java,它会根据pageEncoding的设定读取jsp,结果是由指定的编码方案翻译成统一的UTF-8 JAVA源码(即.java),如果pageEncoding设定错了,或没有设定,出来的就是中文乱码。

第二阶段是由JAVAC的JAVA源码至java byteCode的编译,不论JSP编写时候用的是什么编码方案,经过这个阶段的结果全部是UTF-8的encoding的java源码。

JAVAC用UTF-8的encoding读取java源码,编译成UTF-8 encoding的二进制码(即.class),这是JVM对常数字串在二进制码(java encoding)内表达的规范。

第三阶段是Tomcat(或其的application container)载入和执行阶段二的来的JAVA二进制码,输出的结果,也就是在客户端见到的,这时隐藏在阶段一和阶段二的参数contentType就发挥了功效所以最终的解决方法为:在jsp页面设置pageEncoding或者contentType的其中一个为支持中文的编码格式(如utf-8,gbk,gb2312)。

JSP中文乱码解决方案

JSP中⽂乱码解决⽅案学习JSP的过程中总会碰到中⽂乱码问题,有的是post⽅式提交没问题,⽤get⽅式提交有乱码,还有的是部署到tomcat中没问题,在Eclipse中启动tomcat,发现⽤get⽅式提交有乱码。

产⽣乱码的根源是tomcat、java所⽤的编码⽅式不同。

所以要解决中⽂乱码问题,⾸先要保证各个页⾯所⽤的编码⽅式⼀致,不管是html页⾯还是jsp页⾯,都指定为同⼀种编码⽅式,如GB18030。

(1)html页⾯<meta charset="GB18030">(2)jsp页⾯<%@ page language="java" contentType="text/html; charset=GB18030"pageEncoding="GB18030"%><meta http-equiv="Content-Type" content="text/html; charset=GB18030">可以在Eclipse⾥设置html页⾯及jsp页⾯的编码⽅式统⼀为GB18030接下来,就是指定tomat所⽤的编码⽅式了。

打开tomcat⽬录下的conf⽬录下的server.xml⽂件,修改<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>该⾏为:<Connector port="8080" protocol="HTTP/1.1" URIEncoding="GB18030"connectionTimeout="20000"redirectPort="8443" />注意红⾊加粗部分是新增的。

JSP乱码解决思路总结

JSP乱码解决思路总结JAVA学习2009-10-24 08:55:47 阅读127 评论0 字号:大中小订阅对于Java由于默认的编码方式是UNICODE,所以用中文也易出问题,常见的解决是String s2 = new String(s1.getBytes("ISO-8859-1"),"GBK");前三种方法是我比较常用的方法,别人的经验告诉我:通常get方法通过改server.xml解决,post方法通过过滤器或者设置字符集解决,呵呵,不知道是否可行!1、utf8解决JSP中文乱码问题一般说来在每个页面的开始处,加入:<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><%request.setCharacterEncoding("UTF-8");%>charset=UTF-8 的作用是指定JSP向客户端输出的编码方式为"UTF-8"pageEncoding="UTF-8" 为了让JSP引擎能正确地解码含有中文字符的JSP页面,这在LINUX中很有效request.setCharacterEncoding("UTF-8"); 是对请求进行了中文编码有时,这样仍不能解决问题,还需要这样处理一下:String msg = request.getParameter("message");String str=new String(msg.getBytes("ISO-8859-1"),"UTF-8");out.println(st);2、Tomcat 5.5 中文乱码(利用tomcat已经写好的字符集过滤器)1)只要把%TOMCAT安装目录%/webapps\servlets-examples\WEB-INF\classes\filters\SetCharacterEncodingFilter.class 文件拷到你的webapp目录/filters下,如果没有filters目录,就创建一个。

JSP中汉字乱码现象分析与解决

服务器端代码应该采用一致的字符编码方式,按 一般读取 GET 参数的方法读取其中的请求参数。
3 结语
JSP 中出现汉字乱码现象的场景各种各样,解决的 方法不尽相同, 然而很多 JSP 教材并没有对此进行充 分的介绍以及提出相应的解决方法。 毋容置疑,汉字乱 码问题并不是 JSP 教学中的一个主要知识点, 但也是 一个无法回避的问题。 教师应该适时为学生介绍解决 汉字乱码的正确方法, 避免因该问题影响对其他主要 知识点的教学, 甚至影响学生的学习兴趣和学习积极 性。
Java 核心 API 中的 包有一个 URLEncoder 类[3],其 中 的 encode 方 法 可 以 基 于 某 种 字 符 编 码 方 式 将 一 个 字 符 串 转 换 成 application/x-www -form-urlencoded 格式。 在超链接标记中设置请求参数时,可以利 用该方法事先将包含汉字的参数数据进行格式转换, 这样可以避免汉字乱码的出现,例如:
和响应的编码方式都被默认为是西欧的 ISO-8859-1。 Web 容器对 JSP 文件的处理会经历转换和执行两
个阶段[1]。 在转换阶段,Web 容器会依据指定的文件编 码 方 式 读 入 JSP 文 件 、将 其 转 换 成 实 现 类 (Servlet 类 ) 并进行编译产生.class 文件; 在执行阶段,Web 容器会 创建并初始化实现类的实例、 执行实例的服务方法 (_jspService 方法),然后将输出内容按照指定的响应编 码方式编码产生响应。
pageEncoding 和 contentType 属性用于指定相关内容的 字符编码方式,例如:
NetBeans IDE 环境下创建 JSP 文件时, 一般不会发生 这类错误, 因为工具总是按照指定的编码方式保存文 件, 即 JSP 文件实际采用的编码方式与指定的编码方 式总是一致的。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档