日期:2014-05-17  浏览次数:20789 次

解决中文乱码出错
org.apache.jasper.JasperException: Exception in JSP: /detail.jsp:10

10: String videonames=new String(request.getParameter("videonames").getBytes("ISO-8859-1"),"GBK");
11: // System.out.print(classname2);
12: if(videonames!=null){
13: %>



------解决方案--------------------
你的是取到值了,在后台打印室乱码?
------解决方案--------------------
最近学习了servlet和JSP

乱码这个问题 我也探究出了点东西 算小有心得 放出分享 欢迎纠错

对于JSP页面之间的数据的传送出现乱码 或者servelt从表单中获取出现乱码,我都找到了相关的解决问题,对于有些还加一个过滤器,来过滤文字编码的感觉很是麻烦。

分析如下:页面在传送数据的时候,只要保证两个页面之间的编码是一样的,就可以保证不出现乱码。不管是两个JSP页面传参,还是servelt传参都是传的字节码,只有你接收的时候设置相应的编码,这些字节码才会编译成相应的字符。

对于楼主提出的问题,servelt从表单接收汉字出现乱码。
1.首先确保你的页面是GBK编码,不管是jsp page属性 还是html<meta>标签 都要保证相应的编码和servelt是一致的,这样在传参的时候,servlet那边用相同的编码格式接收字节码才不会出现乱码。
2.就是reqeust.setCharEncoding("gbk")和response.setCharEncoding("gbk")
 a.servlet接收传过来的参数时,无论是表单传,还是url重写传,只要request.setCharEncoding("gbk")和页面端保持一致就能保证接收的汉字不会出现乱码。
 b. servlet向页面端传参用response时,也设置相应的编码和页面端一致。另外有一个小心得,就是用servlet的PrintWriter out=response.getWriter()的方法写出一个页面并返回的时候,response.setCharEncoding("gbk")放在PrintWriter out=response.getWriter()之前和之后是不一样的。放在out被创建之前是正确的。

------解决方案--------------------
忘了一句:现在我用servlet处理事务的时候,基本都是在开头将request.setCharacterEncoding("gbk");response.setCharacterEncoding("gbk");两句直接写上。保证和页面端的编码是一致的就不会出现中文乱码。

现在我做这个用这个方法一直没出现过中文乱码。现在做了一个微博平台做毕业设计。(相关的页面捎带上编码是很必要的无论是html还是jsp,jsp不写编码好像不能在eclipse里面不能保存)。