request 取数据时一部分中文显示正常,一部分中文乱码(奇怪!)

wuxiaowwj 2007-07-18 02:39:24
由list.jsp页面--->do_download.jsp页,在do_download.jsp页得到list.jsp传过来的值,但部分中文显示乱码而不是全部。如“接口简要说明.doc”则显示 “接口简要说??doc”很奇怪!希望高手能够帮忙!

list.jsp主要内容:
<%@ page contentType="text/html; charset=UTF-8" errorPage="../console/error.jsp"%>

<input type="checkbox" name="attachCheck" value="<%=fileName %>"><a href="do_download.jsp?fileName=<%=fileName %>&archrec_id=<%=archrec_id %>"><%=fileName %></a>

do_download.jsp主要内容:
<%@ page contentType="text/html;charset=UTF-8"
import="com.eharmony.psbdais.recordsaccession.jspsmart.*" errorPage="../console/error.jsp"%>

String fileName=request.getParameter("fileName");
fileName=ParamUtils.transFormpara(fileName);//ParamUtils的transFormpara方法作用就是将ISO-8859-1 转换到 UTF-8 ,代码见最后。

步骤:点击list.jsp中的href链接到do_download.jsp
1.假设现在list.jsp中参数fileName=“新建 文本文档.txt”;则在do_download.jsp页得到的值是“新建 文本文档.txt”,是对的。
2.假设现在list.jsp中参数fileName=“接口简要说明.doc”;则在do_download.jsp页得到的值是“接口简要说??doc”,这样就有乱码,不知道该怎么解决。希望高手能够帮忙指点!

ParamUtils类中transFormpara方法:
public static String transFormpara(String name) {
try {
if (name==null||name.equals("")) {
return "";
}
System.out.println(new String(name.getBytes("ISO-8859-1"),"UTF-8"));
return new String(name.getBytes("ISO-8859-1"),"UTF-8");

} catch (UnsupportedEncodingException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
return name;
}
}

...全文
429 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
wuxiaowwj 2007-07-19
  • 打赏
  • 举报
回复
谢谢楼上的各位,我现在知道问题了所在了,我用的平台是Dorado,它内部有字符编码映射,应该是他内部的问题,<property name="common.defaultCharsetName" value="UTF-8"/>
<property name="common.requestCharsetName" value="ISO8859-1"/>
如果把common.defaultCharsetName 的value设成"GBK"就好了,不过这样整个工程就要改了。
我现在换Webligic试试。
小芊Noriko 2007-07-19
  • 打赏
  • 举报
回复
把UTF-8全部改成GBK吧
cxy0303 2007-07-18
  • 打赏
  • 举报
回复
用request.setCharactorEncording("gbk");看看
yangzewei2006 2007-07-18
  • 打赏
  • 举报
回复
是编码问题,需要转一下编码格式.
wuxiaowwj 2007-07-18
  • 打赏
  • 举报
回复
用GB2312也是不对啊,现在的问题是不是所有中文是乱码而是部分乱码,就像 如“接口简要说明.doc”则显示 “接口简要说??doc” 为什么部分中文能够转换正确呢...
ilmarezhou 2007-07-18
  • 打赏
  • 举报
回复
..........用gb2312.......
wuxiaowwj 2007-07-18
  • 打赏
  • 举报
回复
MyJsp1.jsp内容:
<%@ page contentType="text/html;charset=GB2312"
import="com.eharmony.psbdais.recordsaccession.jspsmart.*" errorPage="../console/error.jsp"%>
<%@ page import="com.eharmony.ehais.util.*"%>

<%
String fileName="接口简要说明.doc";
%>
<html>
<head>
</head>
<body>
<input type="checkbox" name="attachCheck" value="<%=fileName%>"><a href="MyJsp2.jsp?fileName=<%=java.net.URLEncoder.encode(fileName,"ISO8859_1")%>"><%=fileName%></a>
</body>
</html>

MyJsp2.jsp内容:
<%@ page contentType="text/html;charset=GB2312"
import="com.eharmony.psbdais.recordsaccession.jspsmart.*" errorPage="../console/error.jsp"%>
<%@ page import="com.eharmony.ehais.util.*"%>

<html>
<head>
</head>
<body>
<%
String fileName=request.getParameter("fileName");
fileName=java.net.URLDecoder.decode(fileName,"GB2312");
out.println("---------------do_download.jsp------fileName(before tran):---------------"+fileName);
fileName=ParamUtils.transFormpara(fileName);
out.println("---------------do_download.jsp------fileName(after tran):---------------"+fileName);
%>
</body>
</html>

就是由MyJsp1.jsp到MyJsp2.jsp 内容就是不对。
wuxiaowwj 2007-07-18
  • 打赏
  • 举报
回复
<%@ page contentType="text/html; charset=GK2312"%>
<%=java.net.URLEncoder.encode("接口简要说明.doc")%>
这2中方法都试过了,都是不行。
dreamover 2007-07-18
  • 打赏
  • 举报
回复
<%=java.net.URLEncoder.encode("接口简要说明.doc")%>
kingdom_seu 2007-07-18
  • 打赏
  • 举报
回复
<%@ page contentType="text/html; charset=UTF-8"....
修改成:
<%@ page contentType="text/html; charset=GK2312"
wuxiaowwj 2007-07-18
  • 打赏
  • 举报
回复
谢谢wfr0701,你说的我会仔细考虑的。
现在问题是部分乱码问题,而不是全部,查了网上的资料总是不能解决,真是急啊。不知道有谁能指点一下。
wuxiaowwj 2007-07-18
  • 打赏
  • 举报
回复
还是没有解决,现在我写了2个最简单的jsp1,jsp2,从jsp1到jsp2,也是存在同样的情况,总有些时候会显示乱码
wfr0701 2007-07-18
  • 打赏
  • 举报
回复
具体出错原因在哪儿我不敢肯定,但是我觉得你最好把
if (name==null||name.equals("")) {
return "";
}
改为:
if (name==null||"".equals(name)) {
return "";
}

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧