收藏 分享(赏)

JSP中文显示乱码解决方案.doc

上传人:hyngb9260 文档编号:4324510 上传时间:2018-12-23 格式:DOC 页数:7 大小:39KB
下载 相关 举报
JSP中文显示乱码解决方案.doc_第1页
第1页 / 共7页
JSP中文显示乱码解决方案.doc_第2页
第2页 / 共7页
JSP中文显示乱码解决方案.doc_第3页
第3页 / 共7页
JSP中文显示乱码解决方案.doc_第4页
第4页 / 共7页
JSP中文显示乱码解决方案.doc_第5页
第5页 / 共7页
点击查看更多>>
资源描述

1、文显示乱码解决方案2006-12-27 22:56一、JSP 页面显示乱码二、表单提交中文时出现乱码三、数据库连接大家在 JSP 的开发过程中,经常出现中文乱码的问题,可能一至困扰着您,我现在把我在 JSP 开发中遇到的中文乱码的问题及解决办法写出来供大家参考。一、JSP 页面显示乱码下面的显示页面(display.jsp)就出现乱码:JSP 的中文处理对不同的 WEB 服务器和不同的 JDK 版本,处理结果就不一样。原因:服务器使用的编码方式不同和浏览器对不同的字符显示结果不同而导致的。解决办法:在 JSP 页面中指定编码方式(gb2312),即在页面的第一行加上:,就可以消除乱码了。完整页

2、面如下:JSP 的中文处理二、表单提交中文时出现乱码下面是一个提交页面(submit.jsp),代码如下:JSP 的中文处理下面是处理页面(process.jsp)代码:JSP 的中文处理如果 submit.jsp 提交英文字符能正确显示,如果提交中文时就会出现乱码。原因:浏览器默认使用 UTF-8 编码方式来发送请求,而 UTF- 8 和 GB2312 编码方式表示字符时不一样,这样就出现了不能识别字符。解决办法:通过request.seCharacterEncoding (“gb2312“)对请求进行统一编码,就实现了中文的正常显示。修改后的 process.jsp 代码如下:JSP 的中

3、文处理三、数据库连接出现乱码只要涉及中文的地方全部是乱码,解决办法:在数据库的数据库 URL 中加上useUnicode=truetryif(iso.equals(“) | iso = null)return “;elseiso = iso.trim();gb = new String(iso.getBytes(“ISO-8859-1“),“GB2312“);return gb;catch(Exception e)System.err.print(“编码转换错误:“+e.getMessage();return “;把它编译成 class,就可以调用 Convert 类的静态方法 ISOtoGB

4、()来转换编码。如果你还有什么不懂之处:我给大家推荐一个好的 JSP-JAVA 网站:http:/ 在 jsp 中如果指定了,那么在改 jsp 中所有构造的 String(不是引用),如果沒有指定编码,那么这些 String 的编码是 A 的。从 request 的得到的 String 如果沒有指定 request 的编码的话,他是 iso-8859-1 的从别的地方得到的 String 是使用原來初始的编码的,比如从数据库得到String,如果数据库的编码是 B,那么该 String 的编码是 B 而不是 A 的,也不是系统默认的。此时,如果要输出的 String 的编码不是 A,那么,很可

5、能显示乱码的,所以首先要将 String 正確转化为编码 A 的 String,然后输出。2. 在 jsp 中沒有指定,那么相当于指定了3 Servelte 中如果执行了像response.setContentType(“text/html;charset=A“);説明将 response 的字符输出流编码设置为 A,所有要输出的 String 的编码要转化为 A 的,否則会得到乱码的。Servelet 中从 request 得到的 String 的编码和 jsp 中一样的,但是在servlet java 文件中构造的 String 是使用的系统默认的编码*java、jsp 中设置编码*/ 首

6、先说在 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 ch

7、aracter_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 连接数据库设置编

8、码 jdbc:mysql:/192.168.0.5: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

9、.*; 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(“en

10、coding“); /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

11、(); 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 编码的解决方案 这个最简单

12、 遇到设置编码的地方就是用 GBK 数据库 gbk 然后在使用个过滤器过滤编码为 gbk 一切搞定。 效果为添加数据无乱码 读出无乱码 数据库管理工具无乱码 到处 sql 结构和数据无乱码 2.使用 UTF-8 编码解决方案 所有编码都设置为 UTF-8 数据库编码 utf8 设置过滤器编码 utf8 数据库连接?characterEncoding=utf8 然后在数据库管理工具或 mysql 命令行 运行 SET character_set_results = gbk; 效果为添加数据无乱码 读出无乱码 数据库管理工具无乱码 到处 sql 结构和数据时存在乱码 3.页面使用 UTF8 数据库使用 latin1 的解决方案 jap java tomcat 设置为 UTF-8 过滤器 utf8 数据库连接?characterEncoding=latin1 数据库其他 latin1 然后在数据库管理工具或 mysql 命令行 运行 SET character_set_results = gbk; 效果为添加数据无乱码 读出无乱码 数据库管理工具无乱码 到处 sql 结构和数据时存在乱码 以上都不需要页面或 java 代码中手动转码

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 实用文档 > 解决方案

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报