本文介绍Tomcat 4.0和Tomcat 4.1下JSP页面中文问题解答,这些方法都已经在 中文版 Windows 98 + JDK 1.3.1 和 中文版 Windows 2000 + JDK 1.3.1 下通过了测试。

现在, Tomcat 作为一种超卓的开放源代码的 JSP 服务器,现在在 JSP 的开发过程中获得了广泛的运用. 可是作为一款英语国家公司开发的软件, 在中文环境下不可避免的会呈现一些乱码问题. 管中窥豹就 Tomcat 4.0和Tomcat 4.1 下的常见中文问题及其处理办法做一个总结. 这些办法都已经在 中文版 Windows 98 + JDK 1.3.1 和 中文版 Windows 2000 + JDK 1.3.1 下经过了测验. 另外在 IBM 的网站上有一个网页 http://www-900.ibm.com/developerWorks/cn/java/JSP_dbcsz/index.shtml 也评论了这个问题.

Tomcat 4.0和Tomcat 4.1下JSP页面中文问题解答(tomcat运行jsp文件404)  4. JSP 第1张

首要为了便于评论, 管中窥豹首要列出了一些便利的东西办法, 便于咱们的评论. 这些办法如下所示:

  1. publicStringtoChi(Stringinput){
  2. try{
  3. byte[]bytes=input.getBytes("ISO8859-1");
  4. returnnewString(bytes);
  5. }catch(Exceptionex){
  6. }
  7. returnnull;
  8. }
  9. //对给定字符进行URL编码
  10. publicStringencode(Stringvalue){
  11. if(isEmpty(value))return"";
  12. returnjava.net.URLEncoder.encode(value);
  13. }
  14. //对给定字符进行URL解码
  15. publicStringdecode(Stringvalue){
  16. if(isEmpty(value))return"";
  17. returnjava.net.URLDecoder.decode(value);
  18. }

问题1. 浏览器中看到的 JSP页面中的汉字怎样都成了
或许原因如下: 您的页面中没有指定页面的字符集为中文. 处理办法(适用于Tomcat 4.0和Tomcat 4.1)是在页面中增加如下代码:

  1. <%@pagecontentType="text/html;charset=gb2312"%>
  2. <metahttp-equiv="Content-Type"content="text/html;charset=gb2312">

问题2. 经过 POST 办法提交的表单的汉字都显现为乱码(在 Tomcat 4.0 下正常, Tomcat 4.1 下呈现).
或许原因如下: POST 提交的字符串都是 ISO8859-1 编码的, 只要把它的字符集转化到中文就行了. 处理办法如下(适用于 Tomcat 4.1):

  1. //单个的参数
  2. Stringresult=toChi(request.getParameter("parameterName"));
  3. //多个参数
  4. Stringvalues[]=request.getParameterValues(name);
  5. if(values!=null){
  6. for(inti=0;i<values.length;i++){
  7. values[i]=toChi(values[i]);
  8. }
  9. }

问题3. 经过 GET 办法提交的表单的汉字都显现为乱码(在 Tomcat 4.0和Tomcat 4.1 下都呈现).或许原因如下: GET 提交的字符串都是 ISO8859-1 编码的, 只要把它的字符集转化到中文就行了. 处理办法如下(适用于 Tomcat 4.1, Tomcat 4.0 下不能用于 page.jsp?username=中文):

  1. //单个的参数
  2. Stringresult=toChi(request.getParameter("parameterName"));
  3. //多个参数
  4. Stringvalues[]=request.getParameterValues(name);
  5. if(values!=null){
  6. for(inti=0;i<values.length;i++){
  7. values[i]=toChi(values[i]);
  8. }
  9. }

问题4. Cookie 中不能写入汉字或许汉字无法正确显现.或许原因如下: Tomcat 4.0 下主动把 Cookie 做了编码为 ISO8859-1 的存储, 而 Tomcat 4.1 下的 JSP 引擎不支持包括含有汉字的 Cookie.

Tomcat 4.0 下的处理办法:

  1. //依据Cookie称号得到恳求中的Cookie值,假如Cookie值是null,则回来""
  2. publicStringgetCookieValue(HttpServletRequestrequest,Stringname){
  3. Cookie[]cookies=request.getCookies();
  4. if(cookies==null)return"";
  5. for(inti=0;i<cookies.length;i++){
  6. Cookiecookie=cookies[i];
  7. if(cookie.getName().equals(name)){
  8. //需要对Cookie中的汉字进行URL反编码,适用版别:Tomcat4.0
  9. returndecode(cookie.getValue());
  10. }
  11. }
  12. //Acookiemightnotreturnanullvalue,mayreturna""
  13. return"";
  14. }

Tomcat 4.1 下的处理办法:

  1. //写入包括汉字Cookie的办法
  2. response.addCookie(newCookie("cookieName",encode("汉字")));
  3. //得到Cookie值的办法(同Tomcat4.0的处理办法)
  4. publicStringgetCookieValue(HttpServletRequestrequest,Stringname){
  5. Cookie[]cookies=request.getCookies();
  6. if(cookies==null)return"";
  7. for(inti=0;i<cookies.length;i++){
  8. Cookiecookie=cookies[i];
  9. if(cookie.getName().equals(name)){
  10. //需要对Cookie中的汉字进行URL反编码,适用版别:Tomcat4.0
  11. returndecode(cookie.getValue());
  12. }
  13. }
  14. //Acookiemightnotreturnanullvalue,mayreturna""
  15. return"";
  16. }

问题5. 在 Tomcat 4.0 下 GET 恳求(如: page.jsp?username=中文) 无法回来本来的值.原因: 与 Tomcat 引擎有关, 不管是否转化内码, 均无法回来本来的值, 可是有一个代替办法, 如下:
将URL地址改变为 "page.jsp?username=" + encode("中文")然后运用下列代码取回参数:

  1. //单个的参数
  2. Stringresult=toChi(request.getParameter("parameterName"));

【修改引荐】

  1. 简略介绍JSP数据库高档操作
  2. 完成JSP数据和JavaScript数据交互运用
  3. JSP和Servlet中的几个编码的效果及原理
  4. 怎么处理JSP页面显现乱码问题
  5. 在JSP顶用JDBC衔接各种数据库
转载请说明出处
知优网 » Tomcat 4.0和Tomcat 4.1下JSP页面中文问题解答(tomcat运行jsp文件404)

发表评论

您需要后才能发表评论