J2EE项目之字符编码
最近项目是使用j2ee进行开发的,编码同一使用utf8编码,经过上网搜索加自己摸索终于把编码的问题搞定了,特此记录一下,以便以后查阅。
环境:Win7 32bit、MyEclipse(自带的Tomcat)
1、首先在IDE中设置编码
打开首选项窗口:【window】->【Preferences】
(1)、【General】->【WorkSpace】
(2)、【General】->【Content Types】将项目中使用到的文件设置为UTF-8格式(.java.jsp.htm.css.js等)
2、上面设置完编码之后,建立工程之后,新建jsp文件发现编码不是utf8二十iso编码。按照下面方法进行设置
双击工程中的jsp文件,在编辑器中打开,在编辑器点击右键,选择【Preferences...】,在侧边选择【jsp】,右侧设置编码为utf8
3、以上设置完毕之后。运行工程,发现在Servlet中out中文的时候会出现下面的异常:
java.io.CharConversionException: Not an ISO 8859-1 character: 啊
解决方法是:向浏览器输出不使用ServletOutputStream而改用PrintWriter
out=resp.getOutputStream(); ==》 out=resp.getWriter();
4、设置成PrintWriter之后,没有异常抛出了,但从后台输出中文,页面上显示的仍然是乱码
5、在调用resp.getWriter()或者getOutputStream()之前的地方加上以下代码即可
resp.setCharacterEncoding("UTF-8");
如果此段代码之前已经调用过resp.getWriter()或者getOutputStream(),编码将设置失败,可能jsp的处理方式是在获取输出流的时候一并将编码设置好,内部应该采用的单例模式,多次调用getWriter()或者getOutputStream()返回的应该是同一对象
控制台输出:
最保险的做法是在未调用response的任何方法前首先调用setCharacterEncoding设置编码
6、现在从server向浏览器输出中文可以正常显示了
7、原以为这样就好了,没想到发现从浏览器传送数据到后台的时候,发现中文会出现乱码
同样的做法是在未调用request.getParamter方法之前设置转换编码
req.setCharacterEncoding("UTF-8");
注意:这样设置只是对post数据起作用,get的数据需要手动转码。本人就是在前台中使用的Jquery的getJSON方法,发现数据没有正确解码,换成post方法就好了
8、这样设置之后发现从前台传过来的数据可以正确解码,但插入数据库的时候发现插入的数据是乱码
数据库我采用的是mysql,编码设置为utf8.因为从数据库中取出的数据显示在前台没有乱码问题,于是想可能是插入的时候编码没有处理好(出现问题的地方应该是拼装sql语句之前)
连接数据库是使用的hibernate,于是想是不是需要配置hibernate的编码方式,百度之后发现主要在连接字符串上面加上编码参数即可:
jdbc:mysql://localhost/dbname
=》
jdbc:mysql://localhost/dbname?useUnicode=true&characterEncoding=UTF-8
来源:小二来壶酒
www.cnzhujie.cn
http://www.cnblogs.com/zhujiecode/archive/2012/08/16/2643027.html
分享到:
相关推荐
J2EE -- 字符编码问题 J2EE -- 字符编码问题 J2EE -- 字符编码问题 J2EE -- 字符编码问题
字符编码过滤器 j2ee字符字符编码 字符编码过滤器 字符编码转换 post字符转换
单字符的变量名一般只用于生命期非常短暂的变量。如:i,j,k,m,n一般用于int。如果变量是集合,则变量名应用复数,即以小写s结尾 。例如: 序号 变量名称 注 释 1 strfileName “文件名”字符串类型 2 intfileCount...
在开发web中各种解决字符集编码的方法和例子,供大家参考
因为是慢慢的收藏..只是顺序有点乱.但希望对大家有帮助 (压缩包共2个) 1包 ...28.字符编码及java中文字符 29.java声音jmf 30.部署,打包和发布 31.测试 32.批处理 33.birt报表 34.Hibernate 35.Htc
因为是慢慢的收藏..东西有点乱.但希望对大家有帮助 (压缩包共2个) 2包 1.编程学习 ...28.字符编码及java中文字符 29.java声音jmf 30.部署,打包和发布 31.测试 32.批处理 33.birt报表 34.Hibernate 35.Htc
3.6:Java.lang-----Math类、字符串和封装类 121 3.7:对象和集合 121 3.8:内部类 125 3.9:线程 125 第四章:面向对象基本概念 155 4.1:统一建模语言UML 155 4.2:面向对象设计原则 165 第五章:软件系统架构设计 ...
1.2.1 正则表达式中元字符的用法... 4 1.2.2 Java中的正则表达式API 5 1.2.3 java.util.regex的使用... 6 1.3 实战正则表达式... 8 第2章 程序最优化.... 14 2.1 空间与时间... 14 2.1.1 空间与时间的概念和度量... ...
编码问题,导致中文字符写不到数据库中,需要修改Mysql文件夹下 my.ini 文件,默认字符集修改(二处)为utf8 2.初始不了SessionFactory 可能是二级缓存初始化问题,去掉二级缓存即可(在hibernate.配置文件中)(没...
8.编码转换,怎样实现将GB2312编码的字符串转换为ISO-8859-1编码的字符串。 9.Java中访问数据库的步骤,Statement和PreparedStatement之间的区别。 10.找出下列代码可能存在的错误,并说明原因: 二、JSP&Servlet...
无论是独立的html,还是其他程序生成的,如Servlet等,注意在最终的html的< head >和< /head >之间必须加入meta标签,用来指定html中输入字符的编码。
Java波浪文字,一个利用Java处理字符的实例,可以设置运动方向参数,显示文本的字符数组,高速文本颜色,显示字体的 FontMetrics对象,得到Graphics实例,得到Image实例,填充颜色数组数据,初始化颜色数组。...
Java 程序编码规范 利用Java实现zip压缩/解压缩 Java语言的Socket编程 利用Java实现串口全双工通讯 Java语言中字符的处理 区分引用类型和原始类型 Java中的两个特殊变量this和super Java中利用散列表实现股票行情...
Java波浪文字,一个利用Java处理字符的实例,可以设置运动方向参数,显示文本的字符数组,高速文本颜色,显示字体的 FontMetrics对象,得到Graphics实例,得到Image实例,填充颜色数组数据,初始化颜色数组。...
环境的搭建: ... 6、如果要显示汉字验证码信息,需要把getimg.java中注释掉的汉字验证码部分释放出来,同时将数字和字符验证码部分注释。 运行注意事项: 1、注意包名的大小写情况 2、注意页面的编码问题
19、我们在web应用开发过程中经常遇到输出某种编码的字符,如iso8859-1等,如何输出一个某种编码的字符串? 90 20.现在输入n个数字,以逗号,分开;然后可选择升或者降序排序;按提交键就在另一页面显示按什么排序...
编码转换,怎样实现将GB2312编码的字符串转换为ISO-8859-1编码的字符串。 9.Java中访问数据库的步骤,Statement和PreparedStatement之间的区别。 10.找出下列代码可能存在的错误,并说明原因: 二、JSP&Servlet...
19、我们在web应用开发过程中经常遇到输出某种编码的字符,如iso8859-1等,如何输出一个某种编码的字符串? 90 20.现在输入n个数字,以逗号,分开;然后可选择升或者降序排序;按提交键就在另一页面显示按什么排序...
19、我们在web应用开发过程中经常遇到输出某种编码的字符,如iso8859-1等,如何输出一个某种编码的字符串? 20.现在输入n个数字,以逗号,分开;然后可选择升或者降序排序;按提交键就在另一页面显示按什么排序,...