当前位置: 代码迷 >> Web前端 >> WebLogic 八 jstl1.0 中文
  详细解决方案

WebLogic 八 jstl1.0 中文

热度:477   发布时间:2012-09-07 10:38:15.0
WebLogic 8 jstl1.0 中文
首先要说明的是,这里所说的WebLogic 8.1指SP3以前的各个版本,因为从SP3开始,即 WebLogic8.1.3+ 好像已经可以支持JSTL了。另外,由于 WebLogic8.1 仅支持Servlet2.3/JSP1.2,所以只能使用JSTL 1.0。

纯英文的包含 JSTL 标签的 JSP 文件在 WebLogic8.1 上执行没有任何问题,但是JSP中一旦使用了中文或者日文字符,即便是用 UTF-8 编码格式,不论是动态编译还是静态编译(使用weblogic.appc或者weblogic.jspc),都会得到类似下文的错误:
java.io.IOException: javax.servlet.jsp.JspException: The taglib validator rejected the page: "java.io.UTFDataFormatException: Invalid byte 3 of 3-byte UTF-8 sequence., "

例如下面这个简单的JSP文件,应该是算很标准了:

<%@ page contentType="text/html; charset=UTF-8"%>
<%@ taglib uri="/tags/jstl/core" prefix="c" %>

<html>
<head>
<meta content="Content-Type" http-equiv="text/html; charset=UTF-8">
<title>欢迎光临</title>
</head>
<body bgcolor="white">
加法测试:12+23=<c:out value="${12 + 23}" /><br>
</body>
</html>

就是这么简单一个JSP文件,就是编译通不过。解决办法如下:
1、修改JSP文件,增加定义JSP文件的 pageEncoding 属性。即
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
如此一来,不论是静态编译还是动态编译都可以通过并且执行无误。

2、修改 web.xml ,在<web-app> </web-app> 之间添加以下内容:
<context-param>
<param-name>weblogic.jsp.encoding</param-name>
<param-value>UTF-8</param-value>
</context-param>
如此一来,动态编译可以通过并且执行无误,但是静态编译(使用weblogic.appc或者weblogic.jspc)仍然不行。

注:上面的说明中以 UTF-8 编码为例,实际上只要只要是正确的编码都可以,例如:GB2312, Shift_JIS 都可以
注:转至:http://loomz.blog.hexun.com/15912386_d.html
  相关解决方案