08-01
19
再论J2EE开发中的编码问题,统一使用UTF-8以适应多语种J2EE开发
作者:Java伴侣 日期:2008-01-19
使用的开发平台为:
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编码,而且可以很好的支持中文和其他语言.
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编码,而且可以很好的支持中文和其他语言.
评论: 0 | 引用: 0 | 查看次数: 515
发表评论