JSP的中文问题再问(一些理论上的探讨)

04-11-11 skyyjck

有一个疑问,关于JSP文件charset属性:

利用下列代码可以设置一个JSP文件的charset属性

<%@ page language="java" contentType="text/html;charset=UTF-8" %>
<p>

任何源代码(包括JSP和JAVA源文件),如果能够被正确地编译为class(比如,在中文操作系统,用javac编译的时候,使用GBK encoding,就能正确将JAVA源代码中的中文转换为unicode存储到class文件中),在输出的时候,如果是中文系统,默认使用GBK编码输出,也能正确显示中文。

对JSP,需要额外的一步,就是将JSP编译为JAVA源代码。我的疑问就是“应用服务器是否是根据JSP文件的charset属性来将JSP编译为JAVA源代码?”我原本认为,这个设置,应该是应用服务器响应客户端的时候所输出的编码,而不应该是用来编译JSP的编码,但Tomcat似乎是根据这个charset来进行编译的。这是Tomcat所特有的,还是所有的应用服务器都是这样的呢?

Tomcat在把JSP编译为JAVA源文件的时候,默认使用的是UTF-8编码而不是操作系统的默认编码,因为我的操作系统是中文的,操作系统默认编码是GBK。

为了在JSP中使用中文,我想配置Tomcat在编译JSP的时候使用GBK编码,查阅Tomcat文档,可以配置javaEncoding参数的值,但是似乎这个配置不起作用。

也就是说,我必须设置charset属性为GBK或gb2312,才能正确处理中文问题,但我想使用UTF-8编码来输出中文,Tomcat却用UTF-8来编译我的JSP文件,最后的结果就是中文不能正确显示,如何才能解决这个问题呢?

我使用的是Tomcat4.1,希望有经验的朋友赐教。

skyyjck
2004-11-11 13:18

找到解决的办法了,增加

<%@page pageEncoding="GBK"%>
<p>

即可,不过Tomcat的那个配置参数依然比较困惑