Java中文问题及最优解决方法__教程 |
|
日期:2007-5-20 0:36:34 人气:115 [大 中 小] |
|
|
|
3、 针对Servlet类
针对Servlet,我们建议用以下方法:
在编译Servlet类的源程序时,用-encoding指定编码为GBK或GB2312,且在向用户输出时的编码部分用response对象的setContentType("text/html;charset=GBK");或gb2312来设置输出编码格式,同样在接收用户输入时,我们用request.setCharacterEncoding("GB2312");这样无论我们的servlet类移植到什么操作系统中,只有客户端的浏览器支持中文显示,就可以正确显示。如下是一个正确的示例:
//HelloWorld.java package hello; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class HelloWorld extends HttpServlet { public void init() throws ServletException { } public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { request.setCharacterEncoding("GB2312"); //设置输入编码格式 response.setContentType("text/html;charset=GB2312"); //设置输出编码格式 PrintWriter out = response.getWriter(); //建议使用PrintWriter输出 out.println(" "); out.println("Hello World! This is created by Servlet!测试中文!"); out.println(" "); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { request.setCharacterEncoding("GB2312"); //设置输入编码格式 response.setContentType("text/html;charset=GB2312"); //设置输出编码格式 String name = request.getParameter("name"); String id = request.getParameter("id"); if(name==null) name=""; if(id==null) id=""; PrintWriter out = response.getWriter(); //建议使用PrintWriter输出 out.println(" "); out.println("你传入的中文字串是:" + name); out.println(" 你输入的id是:" + id); out.println(" "); } public void destroy() { } } 请用javac -encoding gb2312 HelloWorld.java来编译此程序。 测试此Servlet的程序如下所示: <%@page contentType="text/html; charset=gb2312"%> <%request.setCharacterEncoding("GB2312");%>
其运行结果如图6所示:
图6(不好意思,图传不上来,只好让大家自己去想像图的样子了,我想看了上文是可以想来图来的。) |
|
出处:本站原创 作者:佚名 |
|
|