·天新网首页·加入收藏·设为首页
首页|笔记本|手机|数码相机|摄像机|MP3/MP4|主板|内存|显示器|办公|打印机|下载|开发|汽车|学院|业界
硬件|台式机|数码|数字家庭|投影仪|GPS/CPU|显卡|硬盘|服务器|网络|一体机|驱动|源码|游戏|考试|报价
您现在的位置:天新网 > 软件开发 > Java开发 > Servlet/JSP
JSP和Servlet对中文的处理过程
http://dev.21tx.com 2007年12月11日 网页教学网

上一页 1 2 3 4 5 6 7 下一页

下节先讨论ServletJava文件到CLASS文件的转化过程,然后再解释从CLASS文件如何输出到客户端。之所以这样安排,是因为JSP和Servlet在输出时处理方法是一样的。

Servlet:从源文件到Class的过程

Servlet源文件是以“.java”结尾的文本文件。本节将讨论Servlet的编译过程并跟踪其中的中文变化。

用“javac”编译Servlet源文件。javac可以带“-encoding ”参数,意思是“用< Compile-charset >中指定的编码来解释Serlvet源文件”。

源文件在编译时,用来解释所有字符,包括中文字符和ASCII字符。然后把字符常量转变成Unicode字符,最后,把Unicode转变成UTF。

在Servlet中,还有一个地方设置输出流的CharSet。通常在输出结果前,调用HttpServletResponse的setContentType方法来达到与在JSP中设置一样的效果,称之为。

注意,文中一共提到了三个变量:、和。其中,JSP文件只与有关,而和只与Servlet有关。

看下例:

import javax.servlet.*;

import javax.servlet.http.*;

class testServlet extends HttpServlet

{

public void doGet(HttpServletRequest req,HttpServletResponse resp)

throws ServletException,java.io.IOException

{

resp.setContentType("text/html; charset=GB2312");

java.io.PrintWriter out=resp.getWriter();

out.println("");

out.println("#中文#");

out.println("");

}

}


该文件也是用UltraEdit for Windows编写的,其中的“中文”两个字保存为“D6 D0 CE C4”(GB2312编码)。

开始编译。下表是不同时,CLASS文件中“中文”两字的十六进制码。在编译过程中,不起任何作用。只对CLASS文件的输出产生影响,实际上是和一起,达到与JSP文件中的相同的效果,因为对编译和CLASS文件的输出都会产生影响。

表3 “中文”从Servlet源文件到Class的转变过程

Compile-charset
Servlet源文件中
Class文件中
等效的Unicode码

GB2312
D6 D0 CE C4

(GB2312)
E4 B8 AD E6 96 87 (UTF)
\u4E2D\u6587 (在Unicode中=“中文”)

ISO-8859-1
D6 D0 CE C4

(GB2312)
C3 96 C3 90 C3 8E C3 84 (UTF)
\u00D6 \u00D0 \u00CE \u00C4 (在D6 D0 CE C4前面各加了一个00)

无(默认)
D6 D0 CE C4

(GB2312)
同ISO-8859-1
同ISO-8859-1


普通Java程序的编译过程与Servlet完全一样。

上一篇: JSP环境配置:TOMCAT的内存和连接数配置详解
下一篇: 高手为你解读J2EE开发过程中的异常处理

上一页 1 2 3 4 5 6 7 下一页

Google
 
热点文章
关于我们 | 联系我们 | 广告服务 | 工作机会 | 版权声明 | 欢迎投稿 | 网站地图
Copyright © 2000-2008 , www.21tx.com , All Rights Reserved .
© 晨新科技 版权所有 Created by TXSite.net