jsp使用静态包含(<%@page)html页面,html页面中有中文,结果出现乱码,求解决办法! 20

jsp使用静态包含(<%@page)html页面,html页面中有中文,结果出现乱码,求解决办法!经查资料,这个问题在Tomcat中真的解决不了的,在Resin中可以顺利... jsp使用静态包含(<%@page)html页面,html页面中有中文,结果出现乱码,求解决办法!
经查资料,这个问题在Tomcat中真的解决不了的,在Resin中可以顺利显示中文
展开
 我来答
撒旦不骷
2009-12-13 · TA获得超过247个赞
知道小有建树答主
回答量:109
采纳率:0%
帮助的人:51.9万
展开全部
试试这个~str= new String(str.getBytes("ISO8859-1"), "GBK");
乱码问题和很多方面都有关系,一下子也很难讲清楚的哈,你自己好好摸索下呢。

解决方法很多,一般开发做常用的做法时一个过滤器实现javax.servlet.Filter接口
例如:CodeFilter implements Filter
在doFiter()中写两条语句就搞定
例如:
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain filterchain) throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest) request;
req.setCharacterEncoding("UTF-8");
filterchain.doFilter(request, response);
}
然后在web.xml配置一下就搞定了
<filter>
<filter-name>codeFilter</filter-name>
<filter-class>com.*.*CodeFilter</filter-class>//java文件路径,这个不用多说了吧?
</filter>
<filter-mapping>
<filter-name>codeFilter</filter-name>
<url-pattern>*.*</url-pattern>
</filter-mapping>

找资料找到的,一起看看吧

应该对学JSP的我们都有帮助 的哈~

目前, 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 也讨论了这个问题.
首先为了便于讨论, 这里首先列出了一些方便的工具方法, 便于我们的讨论. 这些方法如下所示:

// 转换由表单读取的数据的内码到 GB2312
public String toChi(String input) {
try {
byte[] bytes = input.getBytes("ISO8859-1");
return new String(bytes);
}catch(Exception ex) {
}
return null;
}

// 对给定字符进行 URL 编码
public String encode(String value) {
if(isEmpty(value)) return "";
return java.net.URLEncoder.encode(value);
}

// 对给定字符进行 URL 解码
public String decode(String value) {
if(isEmpty(value)) return "";
return java.net.URLDecoder.decode(value);
}

.
问题1. 浏览器中看到的 JSP 页面中的汉字怎么都成了 '?' ?
可能原因如下: 您的页面中没有指定页面的字符集为中文. 解决方法(适用于Tomcat 4.0 和 Tomcat 4.1)是在页面中添加如下代码:
<%@ page contentType="text/html;charset=gb2312" %>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">

问题2. 通过 POST 方法提交的表单的汉字都显示为乱码(在 Tomcat 4.0 下正常, Tomcat 4.1 下出现).
可能原因如下: POST 提交的字符串都是 ISO8859-1 编码的, 只要把它的字符集转换到中文就行了. 解决方法如下(适用于 Tomcat 4.1):
// 单个的参数
String result = toChi(request.getParameter("parameterName"));
// 多个参数
String values[] = request.getParametervalues(name);
if(values != null) {
for(int i = 0; i < values.length; i++) {
values[i] = toChi(values[i]);
}
}

问题3. 通过 GET 方法提交的表单的汉字都显示为乱码(在 Tomcat 4.0 和 Tomcat 4.1 下都出现).
可能原因如下: GET 提交的字符串都是 ISO8859-1 编码的, 只要把它的字符集转换到中文就行了. 解决方法如下(适用于 Tomcat 4.1, Tomcat 4.0 下不能用于 page.jsp?username=中文):
// 单个的参数
String result = toChi(request.getParameter("parameterName"));
// 多个参数
String values[] = request.getParametervalues(name);
if(values != null) {
for(int i = 0; i < values.length; i++) {
values[i] = toChi(values[i]);
}
}

问题4. Cookie 中不能写入汉字或者汉字无法正确显示.
可能原因如下: Tomcat 4.0 下自动把 Cookie 做了编码为 ISO8859-1 的存储, 而 Tomcat 4.1 下的 JSP 引擎不支持包含含有汉字的 Cookie.
Tomcat 4.0 下的解决方法:
// 根据 Cookie 名称得到请求中的 Cookie 值, 如果 Cookie 值是 null, 则返回 ""
public String getCookievalue(HttpServletRequest request, String name) {
Cookie[] cookies = request.getCookies();
if(cookies == null) return "";
for(int i = 0; i < cookies.length; i++) {
Cookie cookie = cookies[i];
if(cookie.getName().equals(name)) {
// 需要对 Cookie 中的汉字进行 URL 反编码, 适用版本: Tomcat 4.0
return decode(cookie.getvalue());
}
}
// A cookie might not return a null value, may return a ""
return "";
}
Tomcat 4.1 下的解决方法:
// 写入包含汉字 Cookie 的方法
response.addCookie(new Cookie("cookieName", encode("汉字")));
// 得到 Cookie 值的方法(同 Tomcat 4.0 的解决方法)
public String getCookievalue(HttpServletRequest request, String name) {
Cookie[] cookies = request.getCookies();
if(cookies == null) return "";
for(int i = 0; i < cookies.length; i++) {
Cookie cookie = cookies[i];
if(cookie.getName().equals(name)) {
// 需要对 Cookie 中的汉字进行 URL 反编码, 适用版本: Tomcat 4.0
return decode(cookie.getvalue());
}
}
// A cookie might not return a null value, may return a ""
return "";
}

问题5. 在 Tomcat 4.0 下 GET 请求(如: page.jsp?username=中文) 无法返回原来的值.
原因: 与 Tomcat 引擎有关, 不论是否转换内码, 均无法返回原来的值, 但是有一个替代方法, 如下:
将 URL 地址改变为 "page.jsp?username=" + encode("中文")
然后使用下列代码取回参数:
// 单个的参数
String result = toChi(request.getParameter("parameterName"));
第8感超人
2009-12-13 · TA获得超过659个赞
知道小有建树答主
回答量:529
采纳率:0%
帮助的人:331万
展开全部
request.setCharacterEncoding("GBK");
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2009-12-13
展开全部
乱码的来源是你采用的编码有问题:有两点要注意:1 你的请求信息里面的编码可是一定和接受的对象的编码格式一定要一样;2 数据库里面的编码格式也要统一;最后你也可以采用国际化,只要采用国际化,基本就不存在乱码问题
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
luo0426
2009-12-13 · TA获得超过3351个赞
知道小有建树答主
回答量:1016
采纳率:0%
帮助的人:356万
展开全部
有两种方法,在页面里面有UTF-8的代码,让其改为:GBK。另一种添加下面语句
request.setCharacterEncoding("GBK");
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式