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(Java 2 Platform, Enterprise Edition)应用开发中,字符编码问题是非常常见的技术难题之一。如果处理不当,可能会导致数据乱码,影响用户体验甚至导致数据错误。本文将围绕如何解决J2EE中的字符编码问题...
本文将深入探讨"字符编码过滤器"、"J2EE字符编码"、"字符编码转换"以及"POST字符转换"这些关键知识点,并结合提供的文件"encoding-filter.jar"和"使用方法.txt"来解释它们的应用。 首先,字符编码是计算机存储和...
**J2EE项目开发编码规范** 在J2EE项目开发中,编码规范是确保代码质量、可读性和团队协作效率的重要准则。以下是一些关键的编码规范和注意事项: ### **1. 命名规范** #### 1.1 包命名 包的命名应当全为小写字母...
在J2EE项目开发过程中,中文乱码问题是常见的技术难题之一。本文将围绕一个典型的案例来详细分析如何解决J2EE项目中的中文乱码问题,并总结出一系列实用的方法。 #### 一、问题背景与原因分析 在J2EE应用中,中文...
不同语言、不同系统间的字符编码差异可能导致数据在传输过程中出现乱码等问题。因此,理解字符集编码的基本原理及如何在实际开发中正确配置和使用它们至关重要。 #### 二、编码基本知识 ##### 2.1 ISO 8859-1 - *...
在HTTP数据包的解码控制中,Web应用接收请求并发送响应时,需要处理字符编码。HTTP协议允许在请求头和响应头中指定字符集,以确保数据的正确解码。Struts框架作为MVC设计模式的一部分,它在处理请求和展示结果时也会...
它指定JSP文件在被JSP引擎读取和编译时所使用的字符编码。例如,`<%@ page pageEncoding="UTF-8"%>`声明JSP文件使用UTF-8编码。这是一个编译时的设定,它不会影响到最终发送到浏览器的内容,而是确保JSP引擎在处理...
过滤器在请求到达目标资源之前对其进行拦截,可以进行预处理,如权限验证、字符编码转换等。监听器则用于监听应用程序的各种事件,如session创建、销毁等,以便执行相应的操作。 七、JMS与消息传递 Java Message ...
尤其在J2EE平台下,字符编码的处理不当常常会导致乱码问题的出现。乱码不仅影响用户体验,还会给开发者带来不小的困扰。根据乱码出现的原因,问题可以分为四大类:编译不当导致的乱码、WEB应用中的乱码、数据库读写...
解决这个问题需要理解Java的字符编码处理以及J2EE容器的工作原理。以下是一些关键知识点: 1. **Java字符串编码**:Java内部使用UTF-8编码进行字符串运算。字符串的初始编码取决于操作系统默认的字符集。这意味着在...
以下是对"J2EE项目开发规范培训课件"中涉及的Java和JavaScript编码规范的一些详细说明。 **Java编码规范** 1. **命名规范**:变量、方法、类和接口的命名应清晰易懂,通常采用驼峰式命名。例如,变量名为`...
### Java/J2EE中文问题终极解决之道 在Java/J2EE开发过程中,中文字符编码问题一直是困扰许多开发者尤其是初学者的一大难题...希望本文提供的解决方案能够帮助开发者们顺利地解决Java/J2EE项目中的中文字符编码问题。
在软件开发过程中,字符编码问题是一个常见的挑战,尤其是在涉及到多语言和跨平台交互时。`jQuery`是一个广泛使用的JavaScript库,它在与服务器进行异步通信(Ajax)时,可能会遇到编码不匹配的问题,特别是在GBK...
解决方法是在浏览器或者阅读器中更改字符编码设置为UTF-8或其他适合中文的编码格式,这样就可以正常查看中文文档了。 **J2EE的主要组件和功能** 1. **Servlet**:Servlet 是Java编写的小型服务器端程序,主要用于...
在J2EE(Java 2 Platform, Enterprise Edition)应用开发中,字符编码问题尤为常见,特别是当涉及到多语言环境时。乱码问题不仅影响用户体验,还可能导致数据错误处理等问题。本文将详细介绍如何解决J2EE应用程序中...
在使用J2EE API中文版时,如果遇到乱码问题,可能是因为文件的字符编码不匹配。解决这个问题通常需要将文件或项目设置为UTF-8编码。对于文档,使用支持更改编码的编辑器(如Notepad++或IntelliJ IDEA),将其编码...