焦急在线等待:url地址中的中文问题?请高手出手! ( 积分: 200 )

  • 主题发起人 主题发起人 wxb761014
  • 开始时间 开始时间
W

wxb761014

Unregistered / Unconfirmed
GUEST, unregistred user!
我 在 jsp 中有如下一个连接。
<a href="http://localhost:9080/index/文件1.xls">连接1</a>
但是如果打开这个连接,服务器总是提示找不到文件,而且地址中的中文变成了不认识的
一些代码,好象是%55%34之类的,具体记不太清楚了。
但是如果文件名字是英文,则没有问题,如下面这个连接就没有问题。
<a href="http://localhost:9080/index/file1.xls">连接1</a>
各位高手给诊断一下是什么问题,和应用服务器有关系吗,我用的是websphere4.0.
是不是设置一下websphere就可以解决呢。
这个问题以前体过,没有具体解决,现在情况很急,希望大家给个方法或者线索。
本人将非常感谢,在线等待!!!谢谢,不啬分数。
 
我 在 jsp 中有如下一个连接。
<a href="http://localhost:9080/index/文件1.xls">连接1</a>
但是如果打开这个连接,服务器总是提示找不到文件,而且地址中的中文变成了不认识的
一些代码,好象是%55%34之类的,具体记不太清楚了。
但是如果文件名字是英文,则没有问题,如下面这个连接就没有问题。
<a href="http://localhost:9080/index/file1.xls">连接1</a>
各位高手给诊断一下是什么问题,和应用服务器有关系吗,我用的是websphere4.0.
是不是设置一下websphere就可以解决呢。
这个问题以前体过,没有具体解决,现在情况很急,希望大家给个方法或者线索。
本人将非常感谢,在线等待!!!谢谢,不啬分数。
 
与应用服务器无关。
你要把网页的charset=gb2312加上,网页才会正确编码。
 
上面说的有道理,问题可能出现在对中文字的支持上
 
谢谢各位的关注,其实你们说的办法我都试过了。
好像是websphere对于中文url的处理有问题。对此我查了一些资料,也照作了,但都没有效果。
各位知道什么线索,请多多提交,如能解决,将不胜感谢。加倍送分。希望各位websphere高手出手啊!!!
 
TO:wxb761014
这里有一篇文章你看一下,或者有帮助:
http://www.cn-java.com/target/news.php?news_id=941
 
这种东西要进行编码。
<%@ page import="java.net.*"
%>
URLEncoder.encode("文件1.xls") 这样应该就可以了.
 
在网站上最好不要用中文目录,如果是中文的话肯定出错,全用英文目录吧,这和文件的编码无关的
 
大家的方法我都试了,还是不行。
我也是没有办法啊,人家用户就是要用中文文件名啊
难道这个问题真的就没有解了吗。
 
还有一种方法,做一个download.jsp的页 ,把文件名传进取 ,用respond来打,什么名的都可以下载了。
response.setContentType("application/x-msword");//这里要设置头
response.sendRedirect(request.getParameter("addr"));//这里把传过来的路径写上。
 
谢谢各位回答,不过这些办法我试了都不行。
偶尔在csdn上发现一个办法,试试也还可以,虽然不是很完美。
这是简单的JSP,你可以改造成SERVLET,使用方法,例如此文件名是getfile.jsp
与此文件的同目录下有一个test.doc的word目录,则用
http://localhost/getfile.jsp?file=test.doc
<%@page import="java.util.*"%>
<%@page import="java.io.*"%>
<%@page import="java.net.*"%>
<%
String filename = "";
if (request.getParameter("file") != null) {
filename = request.getParameter("file");
}
response.setContentType("application/msword");
response.setHeader("Content-disposition","attachment;
filename="+filename);

BufferedInputStream bis = null;
BufferedOutputStream bos = null;
try {
bis = new BufferedInputStream(new FileInputStream(getServletContext().getRealPath(""
+ filename)));
bos = new BufferedOutputStream(response.getOutputStream());
byte[] buff = new byte[2048];
int bytesRead;
while(-1 != (bytesRead = bis.read(buff, 0, buff.length))) {
bos.write(buff,0,bytesRead);
}
} catch(final IOException e) {
System.out.println ( "³öÏÖIOException."
+ e );
} finally {
if (bis != null)
bis.close();
if (bos != null)
bos.close();
}
//return;
%>
这里,我真得感谢这个作者。
链接是:http://search.csdn.net/Expert/topic/1693/1693378.xml?temp=.373974
看来还是csdn上java高手多啊。
 
多人接受答案了。
 
后退
顶部