08-01
19

再论J2EE开发中的编码问题,统一使用UTF-8以适应多语种J2EE开发  

使用的开发平台为:
Tomcat5.5.18+JDK1.5.0.6+mysql4.1.14
Eclipse3.11
Spring+Hibernate+SiteMesh

1.数据库方面
库表直接使用UTF-8编码,连接时也采用UTF-8编码
如果是mysql4.0的话,默认内部使用Itan1编码,但可以指定连接的编码为UTF-8编码

2.Tomcat配置方面
以前,主要是两个方面修改:
A.conf\Server.xml中加入URIEncoding参数解决Get提交的乱码问题
B.conf\web.xml指定多个Encoding参数解决Jsp编译时的乱码问题
C.编写一个filter,处理Post提交的编码问题
这一次发现这么做,还是有一定的问题,当Tomcat加载多个编码版本的应用时,就会发生问题
查资料发现可以,在conf\server.xml加入useBodyEncodingForURI="true"参数
那么,系统会自动将Get和Post处理的编码一致
而conf\web.xml的修改,也可以通过在所有的jsp页面前,加入pageencoding="utf-8"解决
所以,最终,我以下方式
A.conf\server.xml增加useBodyEncodingForURI="true"
B.所有的Jsp页面前,加入PageEncoding="utf-8"
C.使用filter,可以采用自己编写的,也可以使用Spring提供的,设置编码格式utf-8

3.Java代码编译
设置编译java代码时,使用utf-8编译

4.静态文件和其他文件的保存
统一采用UTF-8编码保存

5.URL编码的传递过程中
以前用的是urlencode(String),现在改为urlencode(String,String),其中后一个参数为"utf-8"

6.下载的文件名
不能直接支持中文的文件名,需要采用读取文件内容,传输到IE客户端,并附加中文文件名的方式

7.读取某些静态文件后,输出的乱码问题
首先,保证静态文件统一用UTF-8编码保存,其次,读取和输出内容时,均用UTF-8编码

如读取:
java.io.BufferedReaderbf=newjava.io.BufferedReader(newjava.io.InputStreamReader(newjava.io.FileInputStream(fName),"utf-8"));

又如输出静态文件:
OutputStreamWriterbufferedWriter=newOutputStreamWriter(newFileOutputStream(targetfile),"utf-8");

通过以上方法,新建立的代码框架中,默认使用的就是UTF-8编码,而且可以很好的支持中文和其他语言.

文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags: UTF-8 静态化 编码问题
相关日志:
评论: 0 | 引用: 0 | 查看次数: 470
发表评论
昵 称:
密 码: 游客发言不需要密码.
内 容:
验证码: 验证码
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.
字数限制 1000 字 | UBB代码 开启 | [img]标签 关闭