url中含有中文的问题

我是从xml中读取文件的信息信息中含有url地址例如http://127.0.0.1:8080/resources/a.doc当然这个是英文的是可以运行的但a.doc换成... 我是从xml中读取文件的信息 信息中含有url地址 例如http://127.0.0.1:8080/resources/a.doc当然这个是英文的 是可以运行的 但a.doc换 成中文后 例如 我.doc就不行了 现在我要用这个url 找到这个文件 然后读出并可以提供下载 在url是英文的情况下 这些工作已经做完了 但是是中文的话 就会提示 找不到文件 但这个文件确确实实是存在的 路径也对 啊 求高手 今天是最后一天 我不想放弃 如果今天整不好 就要放到整个项目的 最后在处理 那要等到什么时候 啊 实在是不甘心啊
server.xml 中已经设置了 是改gb2312 utf-8 gbk 都试过了
展开
 我来答
不一定是飞机
推荐于2017-11-24
知道答主
回答量:0
采纳率:0%
帮助的人:0
展开全部
你需要把中文转码,然后在服务器进行解码操作
因为请求连接是不支持中文的
例子如下:
String string = "蔡君如";
String eStr = URLEncoder.encode(string, "utf-8");
System.out.println(eStr);
System.out.println(URLDecoder.decode(eStr, "utf-8"));

输出:
%E8%94%A1%E5%90%9B%E5%A6%82
蔡君如

上面那个是url用的编码格式,参数带那个 然后服务器解码:
new String(user.getName().getBytes("iso-8859-1"),"utf-8")
解码不用URLDecoder,直接得到参数的bytes,然后根据加码格式解码

下载文件只需把文件写入response的输出流即可:
response.reset();
response.setContentType("bin");
response.addHeader("Content-Disposition", "attachment; filename=\""
+ new String(sss.getBytes("iso-8859-1"), "utf-8") + "\"");
OutputStream os = response.getOutputStream();
String pathString = request.getRealPath("/")
+ new String(sss.getBytes("iso-8859-1"), "utf-8");
InputStream is = new FileInputStream(new File(pathString));
byte[] buffer = new byte[2048];
int len = 0;
while ((len = is.read(buffer)) > 0) {
os.write(buffer, 0, len);
}
is.close();
os.flush();
os.close();
这样返回的就是个文件了~~

希望对你有帮助!
Storm代理
2023-08-29 广告
"StormProxies是全球大数据IP资源服务商,其住宅代理网络由真实的家庭住宅IP组成,可为企业或个人提供满足各种场景的代理产品。点击免费测试(注册即送1G流量)StormProxies有哪些优势?1、IP+端口提取形式,不限带宽,I... 点击进入详情页
本回答由Storm代理提供
百度网友845f74e61
2011-08-06
知道答主
回答量:0
采纳率:0%
帮助的人:0
展开全部
你是想打开一个文件吗?
如果是的话,用一个流,用你这样的方式,会受到URL限制.

如果非要这样,java.net.URLEncoder.encode 这个是正解
追问
不仅要打开 还要读出来  其他工作都做完了  只是以前都是用英语如a.doc这种方式测试   现在就是想把汉语文字的文件也读出来   我是从Xml中读出的String类型的url   看网上的都是从前台传入时 才用java.net.URLEncoder.encode  呢  更何况我刚刚试过了  还是找不到文件  还称英语的还是可以的  看到又遇到这种问题的人发的贴子  但是并没有人回答出解决方案啊  还请再给我看看
追答
6478914
加QQ详细说吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
啦急抱抱熊1234
2011-08-06
知道答主
回答量:0
采纳率:0%
帮助的人:0
展开全部
我自己新建了个测试的项目
无论是请求url带参还是解析xml,中文均可行

这里不方便贴代码解释,加q376570564
我是楼上:不一定是飞机
补充回答百度发不上来!!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友7b2b3b3
2011-08-06
知道答主
回答量:0
采纳率:0%
帮助的人:0
展开全部
需要你的服务器支持中文url才行。比如tomcat,可以在server.xml中设置url的字符集,就可以了。其他的服务器你搜一下处理办法吧。
更多追问追答
追问
都设置了 啊  server,xml中  试过gbk  utf-8   gb2312   还有办法吗
追答
如果不行就在url上转义吧,比如在你要跳转到这个页面的超链接中使用:java.net.URLEncoder.encode("中文")试试。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
?>

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式