jsp页面传值中文乱码 网页乱码 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开发容易出现的中文乱码问题
在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中文乱码问题解决方案中文乱码就是因为编码不符,可能出现乱码有四个地方: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技术目前普遍应用于网络编程,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中文页面乱码与传参乱码]
页面乱码这种乱码的原因是应为没有在页面里指定使用的字符集编码,解决方法:只要在页面开始地方用下面代码指定字符集编码即可代码如下数据库乱码这种乱码会使你插入数据库的中文变成乱码,或者读出显示时也是乱码,解决方法如下:在数据库连接字符串中加入编码字符集代码如下 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中汉字乱码现象分析与解决
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 文件实际采用的编码方式与指定的编码方 式总是一致的。
精选JSP中文乱码的产生原因及解决方案
精选JSP中文乱码的产生原因及解决方案JSP中文乱码的产生原因及解决方案在JSP的开发过程中,经常出现中文乱码的问题,可能一直困扰着大家,现在把JSP开发中遇到的中文乱码的问题及解决办法写出来供大家参考。
首先需要了解一下Java中文问题的由来:Java的内核和class文件是基于unicode的,这使Java程序具有良好的跨平台性,但也带来了一些中文乱码问题的麻烦。
原因主要有两方面,Java和JSP文件本身编译时产生的乱码问题和Java程序于其它媒介交互产生的乱码问题。
首先Java(包括JSP)源文件中很可能包含有中文,而Java和JSP源文件的保存方式是基于字节流的,如果Java和JSP编译成class文件过程中,使用的编码方式与源文件的编码不一致,就会出现乱码。
基于这种乱码,建议在Java文件中尽量不要写中文(注释部分不参与编译,写中文没关系),如果必须写的话,尽量手动带参数-ecoding GBK或-ecoding gb2312或-ecoding UTF-8编译;对于JSP,在文件头加上<%@ page contentType="text/html;charset=GBK"%>或<%@ page contentType="text/html;charset=gb2312"%>基本上就能解决这类乱码问题。
下面是一些常见中文乱码问题的解决方法(下面例子中ecoding 采用的是gb2312,也可设为ecoding GBK或ecoding UTF-8):一、JSP页面乱码这种乱码问题比较简单,一般是页面编码不一致导致的乱码,一般新手容易出现这样的问题,具体分以下两种情况:➢未指定使用字符集编码下面的显示页面(display.jsp)就出现乱码:<html><head><title>JSP的中文处理</title><meta http-equiv="Content-Type" content="text/html charset=gb2312"></head><body><%out.print("JSP的中文处理");%></body></html>这种乱码的原因是没有在页面里指定使用的字符集编码,JSP页面中出现了中文字符,而默认的ISO-8859-1字符集中无中文字符,解决方法:只要在页面开始地方用下面代码指定字符集编码即可,在JSP页面中指定编码方式(gb2312),和浏览器解码方式设置相同,即在页面的第一行加上:<%@ page contentType="text/html; charset=gb2312"%>,就能够消除乱码了。
浅析JSP中文乱码问题及对策
丝路视野浅析J S P 中文乱码问题及对策贾倩(河北科技学院,河北保定071000)【摘要】本文对JSP 编程中遇到的中文乱码问题进行了分析总结,并给出了相应的解决方案。
【关键词】JSP ;中文乱码;解决方案一、 J S P 页面里的中文内容显示乱码由于Tomcat 默认输出的字符编码为% ISO - 8859 - 1”, 而通常编写中文应用程序时都是使用6B 2312或g b k 编码方式,编码方案的不一致就导致了乱码的出现。
解决方案:在JSP 页面首部加上< % @ pagecontent Type = % text/litml ; charset = GB 2312”page Encoding = “GB 2312”% >命令来指定页面的编码方式。
二、 当request 对象获取表单元素中的汉字信息时出现乱码(1) 若用户在页面的input 输入框中输入了中文,提交后 在客户端显示为乱码。
产生的原因$ j a a 首先按ISO - 5589 - 1 的默认方式对这段文本进行编码,然后交给G H le t 处理,处理 后的文本将还是以IS O -5589 - 1编码方式显示,如果此时客 户端是按G BK 编码来显示,则编码格式的不同会导致中文乱码 的出现。
解决方案:可通过编写Servlet 过滤器,并在web.xnd 文件中设置编码格式参数和过滤器的U R L 映射信息来解决。
过滤器代码:public class CharacterEncodingFilter implements Filter 5 private FilterConfig config ; private String encoding = " ISO 8859_ 1” ; public void destroy ( ) j conf g = null ;| public void doFilter ( ServletRequest request ,ServletResponse response , FilterChain chain ) throws IOException , ServletException j request . setCharacterEncoding ( encoding );chain . doFilter (request ,response );|public void init ( FilteHConfig config ) thHows ServletException j this . confg = config ;String s = config . getlnitParnmeter ( " encoding "); i f (S! =null ) j encoding = s ; | | |配置过滤器代码:< f I ter >< filte r - name > encodingFilte r </filte r - name >< filter - class > com . filter . CharacterE n codingFilte r 〈/filte r - class >< init - param >< param - name > encoding < /param - name >< param - value > u / - 8 </param - value >< / i nit - param ></flte r >< filter - mapping >< filte r - name > encodingFilte r </filte r - name >< url - pattern >/# </u rl - pattern >< /filte r - mapping >(2) 若表单中按钮的名字为中文,必须进行特殊处理, 否则会出现中文乱码的现象。
JSP出现中文乱码问题解决方法详解
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中指定页⾯显⽰的编码,消除乱码的解决⽅案很简单上⾯代码中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,那么页⾯就会按照此编码来显⽰,于是乱码消失。
JSP技术中文乱码的原因及解决方法
JSP 技术中文乱码的原因及解决方法杨金花(西安铁路职业技术学院陕西西安710014)摘要:JSP 技术广泛应用于动态网页制作,但在应用中文字符时常常出现乱码。
以前有关JSP 技术中文乱码的研究,只是侧重于对常见的几种中文乱码情况分析,并从网页代码方面进行研究,然后给出相应的代码,缺少对造成中文乱码原因的研究。
本文从造成乱码的根本原因入手进行分析,以JSP 技术工作过程为线索,提出新的研究思路:从开发Java 程序时所涉及的开发环境以及使用的开发工具着手,研究字符的存储与编码的关系,将影响Java 中字符编码的原因分为内因和外因。
研究结果表明,在使用JSP 技术的过程中,中文字符的编码不仅在JSP 工作过程中,会发生编码的转换,而且会因开发环境以及使用开发工具不同,使存储在内存的编码形式发生转换,每种编码之间的转换没有规律。
本文系统地分析了Java 中字符编码的转换,最后针对JSP 中常见的中文乱码情况,给出了相应的解决方法。
关键词:字符编码;中文乱码;JSP 技术;Servlet 中图分类号:TP311文献标识码:A文章编号:1674-6236(2011)01-0025-03The reason and solution of Chinese garbled code in JSP technologyYANG Jin -hua(Xi ’an Railway Vocational Technical College ,Xi ’an 710014,China )Abstract:JSP technology is widely used in the production of dynamic web pages ,but the chinese characters in its application often garbled.Chinese garbled before the JSP technology research ,is focused on several common chinese garbled on the situation analysis ,and researches aspects of the code from the page ,and then gives the corresponding code ,the lack of research into the reasons causes the chinese garbled.This paper analyses from the real causes of the underlying cause garbled.JSP technology researches to the work process for the clues ,puts forward new research ideas :the development of Java programs involved in the development environment and start using the development tools ,storage and encoding of character relationships ,affecting the character encoding in Java is divided into internal and external reasons.The results show that use of JSP technology in the process ,the chinese character code in the JSP course of their work not only will happen coding of the convert ,but also because of development environment ,and use the development tools ,the code stored in memory in different forms.Between each code conversion is not the law.This paper systematically analysed the Java character encoding conversion ,in the end for the JSP common situation in the chinese garbled ,the corresponding solution was given.Key words:character encoding ;chinese garbled ;JSP technology ;ServletJSP ,也就是Java Server Page (Java 服务器网页),是目前市场上主流的分布式应用程序开发平台。
JSP中文乱码问题完全解决方案
request.setCharacterEncoding(this.encodingName);
}
chain.doFilter(request, response);
}
public void destroy() {
} else {
this.enable = false;
}
}
public void doFilter(ServletRequest request, ServletResponse response,FilterChain chain) throws IOException, ServletException {
四. 数据库操作中文乱码
在建立数据库的时候,应该选择支持中文的编码格式,最好能和JSP页面的编码格式保持一致,这样就可以尽可能减少数据库操作的中文乱码问题。同时在JDBC连接数据库的时候可以使用类似下面这种形式的URL。jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=pubs;useUnicode=true;characterEncoding=gb2312
import javax.servlet.UnavailableException;
public class SetCharacterEncodingFilter implements Filter {
protected FilterConfig filterConfig;
protected String encodingName;
}
}
在web.xml中添加过滤器的配置如下:
<filter>
中文乱码问题解决方法
在Jsp文件问题时,中文乱码现象经常遇到,现将处理方法总结一下,供大家参考:(在各种编码方案中,UTF-8、GBK、GB2312都是支持中文显示的。
只是GBK比GB2312支持跟多的字符)一、JSP页面显示乱码Jsp文件页面显示乱码,这种情况比较好处理,在页面的Page指令加上如下一项就OK了:<%@ page contentType="text/html; charset=gb2312"%>注:如果是HTML页面显示乱码,则加上:<meta http-equiv="Content-Type" content="text/html; charset=gb2312"> 二、URL传递参数中文乱码当我们把一段中文字符作为参数传递个另一页面时,也会出现乱码情况,解决方法一如下:在参数传递时对参数编码,比如RearshRes.jsp?keywords=" + .URLEncoder.encode(keywords) 然后在接收参数页面使用如下语句接收keywords=newString(request.getParameter("keywords").getBytes("ISO-8859-1"),"UTF-8") ;解决方法二:修改tomcat的server.xml文件中URIEncoding。
<Connectordebug="0"acceptCount="100"connectionTimeout="20000"disableUploadTimeout="true"port="80"redirectPort="8443"enableLookups="false"minSpareThreads="25"maxSpareThreads="75"maxThreads="150"maxPostSize="0"URIEncoding="GBK"></Connector>这个方法主要针对从url中获取字符串的问题。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、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
注:目前只整理了这些,还有待增加完善。