java下载远程服务器中以中文命名的文件

本文介绍如何通过修改Tomcat配置文件和Java代码实现,解决远程服务器使用中文文件名时出现的访问错误问题。重点包括配置server.xml文件添加URIEncoding属性,以及在Java代码中对中文文件名进行URLEncoder编码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

远程服务器使用的是Tomcat 6.0.18,但是Tomcat 默认是不支持中文文件名访问。


(一)修改Tomcat配置文件方法:
找到Tomcat 目录,打开config/server.xml文件,添加一段代码即可。如红色的字体
  <Connector port="8080" 
             URIEncoding="utf-8" 
             protocol="HTTP/1.1" 
             connectionTimeout="20000" 
             redirectPort="8443" /> 
这段代码规定了Tomcat监听HTTP请求的端口号等信息,可以在这里添加一个属性:URIEncoding,将该属性值设置为UTF-8,即可让Tomcat不再以ISO-8859-1的编码处理get请求。更改后的代码(红色部分为新添加的代码) 


 


(二)Java代码实现
java.net.URLConnection和java.net.URL是远程读取文件重要的类。因为当前的文件名是中文,如果直接构造字符串http://localhost/download/中文文件.xxx 读取远程文件必然要出错。需要对"中文文件.xxx"进行编码,如下代码:
 
URLEncoder.encode("中文文件.xxx", "utf-8");

//输入结果为:%E4%B8%AD%E6%96%87%E6%96%87%E4%BB%B6.xxx

所以,构造new java.net.URL( "http://localhost/download/%E4%B8%AD%E6%96%87%E6%96%87%E4%BB%B6.xxx");此时远程请求数据才不会出错


附上测试用不完善代码:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值