JSP中文显示乱码解决方案.doc_第1页
JSP中文显示乱码解决方案.doc_第2页
JSP中文显示乱码解决方案.doc_第3页
JSP中文显示乱码解决方案.doc_第4页
JSP中文显示乱码解决方案.doc_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

文显示乱码解决方案2006-12-27 22:56一、JSP页面显示乱码二、表单提交中文时出现乱码三、数据库连接大家在JSP的开发过程中,经常出现中文乱码的问题,可能一至困扰着您,我现在把我在JSP开发中遇到的中文乱码的问题及解决办法写出来供大家参考。一、JSP页面显示乱码下面的显示页面(display.jsp)就出现乱码:JSP的中文处理对不同的WEB服务器和不同的JDK版本,处理结果就不一样。原因:服务器使用的编码方式不同和浏览器对不同的字符显示结果不同而导致的。解决办法:在 JSP页面中指定编码方式(gb2312),即在页面的第一行加上:,就可以消除乱码了。完整页面如下:JSP的中文处理二、表单提交中文时出现乱码下面是一个提交页面(submit.jsp),代码如下:JSP的中文处理下面是处理页面(process.jsp)代码:JSP的中文处理如果submit.jsp提交英文字符能正确显示,如果提交中文时就会出现乱码。原因:浏览器默认使用UTF-8编码方式来发送请求,而UTF-8和 GB2312编码方式表示字符时不一样,这样就出现了不能识别字符。解决办法:通过request.seCharacterEncoding (gb2312)对请求进行统一编码,就实现了中文的正常显示。修改后的process.jsp代码如下:JSP的中文处理三、数据库连接出现乱码只要涉及中文的地方全部是乱码,解决办法:在数据库的数据库URL中加上useUnicode=true&characterEncoding=GBK就OK了。四、数据库的显示乱码在mysql4.1.0中,varchar类型,text类型就会出现中文乱码,对于varchar类型把它设为binary属性就可以解决中文问题,对于text类型就要用一个编码转换类来处理,实现如下:publicclassConvert/*把ISO-8859-1码转换成GB2312*/publicstaticStringISOtoGB(Stringiso)Stringgb;tryif(iso.equals()|iso=null)return;elseiso=iso.trim();gb=newString(iso.getBytes(ISO-8859-1),GB2312);returngb;catch(Exceptione)System.err.print(编码转换错误:+e.getMessage();return;把它编译成class,就可以调用Convert类的静态方法ISOtoGB()来转换编码。如果你还有什么不懂之处:我给大家推荐一个好的JSP-JAVA网站:/dsp/总结:1.在jsp中如果指定了,那么在改jsp中所有构造的String(不是引用),如果沒有指定编码,那么这些String的编码是A的。从request的得到的String如果沒有指定request的编码的话,他是iso-8859-1的从别的地方得到的String是使用原來初始的编码的,比如从数据库得到String,如果数据库的编码是B,那么该String的编码是B而不是A的,也不是系统默认的。此时,如果要输出的String的编码不是A,那么,很可能显示乱码的,所以首先要将String正確转化为编码A的String,然后输出。2.在jsp中沒有指定,那么相当于指定了3Servelte中如果执行了像response.setContentType(text/html;charset=A);説明将response的字符输出流编码设置为A,所有要输出的String的编码要转化为A的,否則会得到乱码的。Servelet中从request得到的String的编码和jsp中一样的,但是在servletjava文件中构造的String是使用的系统默认的编码*java、jsp中设置编码*/ 首先说在java里那些地方能够设置编码 开发工具会有好多地方设置编码这个不解少了,这里不介绍了。 下面两种设置编码格式方法适用于jsp页面(*.jsp) 下面方式适合于jsp、servlet、action中(*.java) request.setCharacterEncoding(UTF-8); response.setCharacterEncoding(UTF-8); 下面适合html页面(*.htm;*.html) Tomcate设置编码(server.xml) mysql设置编码命令 SET character_set_client = utf8; SET character_set_connection = utf8; SET character_set_database = utf8; SET character_set_results = utf8;/*这里要注意很有用*/ SET character_set_server = utf8; SET collation_connection = utf8_bin; SET collation_database = utf8_bin; SET collation_server = utf8_bin; my.ini中配置默认编码 default-character-set=utf8 连接数据库设置编码 jdbc:mysql:/:3306/test?characterEncoding=utf8 /*java与mysq编码对应*/ java中的常用编码UTF-8;GBK;GB2312;ISO-8859-1; 对应mysql数据库中的编码utf8;gbk;gb2312;latin1 /*过滤器使用*/ /过滤器设置编码过滤(SetCharacterEncodingFilter.java) package com.sorc; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class SetCharacterEncodingFilter extends HttpServlet implements Filter private FilterConfig filterConfig; private String encoding=null; /Handle the passed-in FilterConfig public void init(FilterConfig filterConfig) this.filterConfig=filterConfig; encoding=filterConfig.getInitParameter(encoding); /Process the request/response pair public void doFilter(ServletRequest request,ServletResponse response,FilterChain filterChain) try request.setCharacterEncoding(encoding); filterChain.doFilter(request,response); catch(ServletException sx) filterConfig.getServletContext().log(sx.getMessage(); catch(IOException iox) filterConfig.getServletContext().log(iox.getMessage(); /Clean up resources public void destroy() /web.xml配置过滤器方法(web.xmd) setcharacterencodingfilter com.sorc.SetCharacterEncodingFilter encoding utf8 setcharacterencodingfilter /* /*有了上面的基础下面试完满解决方案*/ 1.使用GBK编码的解决方案 这个最简单 遇到设置编码的地方就是用GBK数据库gbk 然后在使用个过滤器过滤编码为gbk一切搞定。 效果为添加数据无乱码 读出无乱码 数据库管理工具无乱码 到处sql结构和数据无乱码 2.使用UTF-8编码解决方案 所有编码都设置为UTF-8 数据库编码utf8 设置过滤器编码utf8 数据库连接?characterEncoding=utf8 然后在数据库管理工具或mysql命令行 运行 SET character_set_results = gbk; 效果为添加数据无乱码 读出无乱码 数据库管理工具无乱码 到处sql结构和数据时存在乱码 3.页面使用UTF8 数据库使用latin1的解决方案 jap

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论