J2EE中文乱码总结
来源:互联网 发布:数据交换共享平台 编辑:程序博客网 时间:2024/04/27 22:38
转载自:http://xuepiaoqiyue.blog.51cto.com/4391594/945197
一、乱码的问题环节判断
遇到乱码,我们首先要定位是在哪一个环节乱码的,那就要先来熟悉下J2EE中中文字符所经历的环节:
1、 存数据时又可分为两步
1) 先从页面到服务器(多由jsp页面编码设置及web服务器接收设置导致)
2) 再由服务器到数据库(多由数据库导致)
2、 取数据时也可分为两步
3) 先从数据库到服务器(多由数据库导致)
4) 再由服务器到页面(多由jsp页面编码设置)
如何判断问题环节:
1、我们可以先插入一条中文数据,看看数据库中是否乱码,如果乱码,则问题就出在插入数据环节;
2、我们可以在数据库中直接插入一条中文数据,并且数据库查看正常,然后用我们的页面展示查看,若乱码,则问题出在获取数据环节;
3、在控制台打印插入数据时的中文数据,若乱码,问题就在页面到服务器之间;
4、取数据时同样可以在控制台打印从数据库取出的中文数据,若乱码,则问题在数据库到服务器之间;
二、乱码问题的处理
首先,大家熟悉的中文编码有UTF-8、GBK、GB2312等,一个系统中,都要尽量保持编码格式的统一,以免不必要的麻烦,我平时都是采用UTF-8作为统一编码。
1)在jsp页面上可能有这几种情况导致乱码:
a)下面代码中设置为UTF-8的地方没有设置或者设置不一致
- <%@ page language="java" contentType="text/html; charset=UTF-8"
- pageEncoding="UTF-8"%>
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
b)页面本身的编码格式设置不正确
在eclipse中右击文件-properties-resource
Text file encoding中有默认编码格式设定并可以修改编码格式
Eclipse编码格式的设定可参考http://tangxh1129.iteye.com/blog/1295305
c)浏览器编码格式的设定导致,将浏览器上的编码格式设定为UTF-8,各浏览器设置方式可能稍有差异
2)WEB服务器
web服务器对中文数据的接收也会造成乱码,而解决方法又要根据提交方式分为两种
a)get方法
在server.xml里面增加URIEncoding="UTF-8"
- <Connector port="8080" maxHttpHeaderSize="8192" maxThreads="150" minSpareThreads="25" maxSpareThreads="75" enableLookups="false" redirectPort="8443" acceptCount="100" connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="UTF-8" />
b)post方法
可在后台获取数据时添加转码如下:
String str = new String(request.getParameter("something").getBytes("ISO-8859-1"),"utf-8") ;
也可在系统中添加过滤器,省去一次次转码的重复操作,转码过滤器可参考http://blog.csdn.net/cn_gaowei/article/details/6673539
Web服务器也可能已经替我们完成了转码工作,在tomcat6.0.32上就需要过滤器,但tomcat6.0.35没有过滤器也一样可以,jetty也同样不需要自己添加过滤器
3)数据库
数据库的编码格式设定主要分为三种:
一种是建立的表的语系设定问题
一种是数据库server端的编码格式设定,这种设定决定了中文数据写入时是否会乱码;
还有一种是client端的编码格式设定,这种设定决定了中文数据读取给web服务器时是否会乱码。
由于各种数据库的不同、部署环境的操作系统不同导致的数据库版本不同,导致各种数据库编码格式的设置也不太相同。
下面为常见mysql乱码问题的解决方法:
http://www.baidu.com/s?wd=mysql+%E4%B9%B1%E7%A0%81&tn=site888_1_pg&cl=3&ie=utf-8
http://www.cnblogs.com/finallyliuyu/archive/2010/05/14/1735759.html
- J2EE中文乱码总结
- J2EE中文乱码
- j2ee中文乱码问题
- j2ee中文乱码小结
- J2EE中文乱码问题解决
- J2EE中中文乱码问题
- J2EE中文乱码完整攻略
- J2EE—解决中文乱码
- J2EE中文乱码的问题
- J2EE中文乱码的解决方案
- J2EE ajax中文乱码解决
- J2EE (六) 详解 java 中文乱码
- J2EE编辑中的中文乱码解决问题
- [j2ee][IDEA properties中文乱码解决]
- J2EE传参解决中文乱码
- J2EE传参解决中文乱码问题
- J2EE 解决MySQL中文乱码问题
- 中文乱码问题总结
- Best Practices For Database Consolidation On Exadata Database Machine
- 【面试笔试-php】几道php小面试题目
- 如何使用XCode 4创建ipa文件及提交应用程序
- IOS学习笔记32—使用Storyboard实现复杂界面
- svn操作流程
- J2EE中文乱码总结
- platform_driver_probe与platform_driver_register的区别
- cocos2d-x 配置
- c++中重载操作符表,可以帮助重载哪些操作符,以及到底是重载为类方法还是类的友元方法
- [部署Mantis]用Administrator注册新用户时设置密码
- ado连接字符串总结
- ios 常见系统控件尺寸
- Linux-2.6.20的cs8900驱动分析
- Javascript 中的false,零值,null,undefined和空字符串对象