2009年9月8日星期二

[note]JAVA Web开发中遇到的编码问题及其解决方式总结

1. Java程序在JVM中运行的时候是unicode形式编码,遵守 Unicode V2.0。Java 程序无论是从/往文件系统以字符流读/写文件,还是往 URL 连接写 HTML 信息,或从 URL 连接读取参数值,都会有字符编码的转换。这样做虽然增加了编程的复杂度,容易引起混淆,但却是符合国际化的思想的。存储在文件中的时候是其他你设定的编码,比如"UTF-8"等等。

2. 网页的编码有"<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">"形式设定,设定之后,所有网页中的字符包括传送的报文都是"UTF-8"格式。

3. 使用Servlet API读取URL中"?"之后的属性参数时调用的方法是request.getParameter("parameterName");它首先查看报文头部中Content-Typetext/html的值是什么,如果值为空就默认使用"iso-8859-1"(不太确定)编码去解码成unicode编码。

4.request.getParameter("parameterName");方法不仅可以获得"?"之后的参数也可以获得报文content中的参数。但是自己写的方法用于读取"?"之后参数,通常没有编码转换,所以会出问题。需要注意!

我的解决方案:

.java文件使用UTF-8编码;
html,jsp等页面文件使用UTF-8编码;
数据库使用UTF-8编码;
添加设置编码为UTF的servlet过滤器;
(自己截取parameter时使用URLdecoder进行解码成UTF-8编码)

没有评论: