`

J2EE项目之字符编码

阅读更多
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字符转换

    字符编码过滤器 j2ee字符字符编码 字符编码过滤器 字符编码转换 post字符转换

    J2EE项目开发编码规范

    单字符的变量名一般只用于生命期非常短暂的变量。如:i,j,k,m,n一般用于int。如果变量是集合,则变量名应用复数,即以小写s结尾 。例如: 序号 变量名称 注 释 1 strfileName “文件名”字符串类型 2 intfileCount...

    字符集编码

    在开发web中各种解决字符集编码的方法和例子,供大家参考

    java编程.数据库.j2ee架构与模式等电子书整合(1)

    因为是慢慢的收藏..只是顺序有点乱.但希望对大家有帮助 (压缩包共2个) 1包 ...28.字符编码及java中文字符 29.java声音jmf 30.部署,打包和发布 31.测试 32.批处理 33.birt报表 34.Hibernate 35.Htc

    java编程.数据库.j2ee架构与模式等电子书整合(2)

    因为是慢慢的收藏..东西有点乱.但希望对大家有帮助 (压缩包共2个) 2包 1.编程学习 ...28.字符编码及java中文字符 29.java声音jmf 30.部署,打包和发布 31.测试 32.批处理 33.birt报表 34.Hibernate 35.Htc

    J2EE学习笔记

    3.6:Java.lang-----Math类、字符串和封装类 121 3.7:对象和集合 121 3.8:内部类 125 3.9:线程 125 第四章:面向对象基本概念 155 4.1:统一建模语言UML 155 4.2:面向对象设计原则 165 第五章:软件系统架构设计 ...

    J2EE开发全程实录(JAVA项目开发)

    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 空间与时间的概念和度量... ...

    基于J2EE短信共享网站设计(Spring+Struts2+Hibernate)

    编码问题,导致中文字符写不到数据库中,需要修改Mysql文件夹下 my.ini 文件,默认字符集修改(二处)为utf8 2.初始不了SessionFactory 可能是二级缓存初始化问题,去掉二级缓存即可(在hibernate.配置文件中)(没...

    java面试题大全--java基础,struts,spring,ejb等

    8.编码转换,怎样实现将GB2312编码的字符串转换为ISO-8859-1编码的字符串。 9.Java中访问数据库的步骤,Statement和PreparedStatement之间的区别。 10.找出下列代码可能存在的错误,并说明原因: 二、JSP&Servlet...

    J2EE WEB-Tomcat5.5.9中文问题解决方案

    无论是独立的html,还是其他程序生成的,如Servlet等,注意在最终的html的< head >和< /head >之间必须加入meta标签,用来指定html中输入字符的编码。

    JAVA上百实例源码以及开源项目源代码

     Java波浪文字,一个利用Java处理字符的实例,可以设置运动方向参数,显示文本的字符数组,高速文本颜色,显示字体的 FontMetrics对象,得到Graphics实例,得到Image实例,填充颜色数组数据,初始化颜色数组。...

    CSDN.rar_简繁体_股票 java

    Java 程序编码规范 利用Java实现zip压缩/解压缩 Java语言的Socket编程 利用Java实现串口全双工通讯 Java语言中字符的处理 区分引用类型和原始类型 Java中的两个特殊变量this和super Java中利用散列表实现股票行情...

    JAVA上百实例源码以及开源项目

     Java波浪文字,一个利用Java处理字符的实例,可以设置运动方向参数,显示文本的字符数组,高速文本颜色,显示字体的 FontMetrics对象,得到Graphics实例,得到Image实例,填充颜色数组数据,初始化颜色数组。...

    验证码组件

    环境的搭建: ... 6、如果要显示汉字验证码信息,需要把getimg.java中注释掉的汉字验证码部分释放出来,同时将数字和字符验证码部分注释。 运行注意事项: 1、注意包名的大小写情况 2、注意页面的编码问题

    java面试题大全(2012版)

    19、我们在web应用开发过程中经常遇到输出某种编码的字符,如iso8859-1等,如何输出一个某种编码的字符串? 90 20.现在输入n个数字,以逗号,分开;然后可选择升或者降序排序;按提交键就在另一页面显示按什么排序...

    JAVA面试题最全集

    编码转换,怎样实现将GB2312编码的字符串转换为ISO-8859-1编码的字符串。 9.Java中访问数据库的步骤,Statement和PreparedStatement之间的区别。 10.找出下列代码可能存在的错误,并说明原因: 二、JSP&Servlet...

    最新Java面试宝典pdf版

    19、我们在web应用开发过程中经常遇到输出某种编码的字符,如iso8859-1等,如何输出一个某种编码的字符串? 90 20.现在输入n个数字,以逗号,分开;然后可选择升或者降序排序;按提交键就在另一页面显示按什么排序...

    Java面试宝典2010版

    19、我们在web应用开发过程中经常遇到输出某种编码的字符,如iso8859-1等,如何输出一个某种编码的字符串? 20.现在输入n个数字,以逗号,分开;然后可选择升或者降序排序;按提交键就在另一页面显示按什么排序,...

Global site tag (gtag.js) - Google Analytics