2 u011353962 u011353962 于 2016.09.13 11:42 提问

web环境 url无法访问有中文名字的文件

tomcat web容器
webroot里有啊.txt文件
图片说明
直接浏览器输入无法访问(英文可以)
图片说明
有什么方法能够直接访问这个 啊.txt文件(不要让我改成英文)。
查过网上解决办法,都没解决到。
有没有哪位大哥能解决这个问题呢?

7个回答

w172087242
w172087242   Ds   Rxr 2016.09.13 11:44
已采纳

1.使用uriencode对你的uri进行编码就ok;
2.再服务端对接收到的请求进行转发,并且对路径进行解码

希望能够帮到你...

u011353962
u011353962 回复little_how: 流弊啊,谢了
接近 2 年之前 回复
w172087242
w172087242 回复一个好人JAVA: 你是使用tomcat吗?如果是那么你在你的server.xml这样改<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8" />
接近 2 年之前 回复
u011353962
u011353962 回复一个好人JAVA: 你可以帮忙就针对这个问题写一个小例子吗
接近 2 年之前 回复
u011353962
u011353962 回复little_how: js用了encode处理之后还是没效果,window.location.href="../"+encodeURI("啊.txt");
接近 2 年之前 回复
w172087242
w172087242 回复一个好人JAVA: 地址栏的最后经由你的js处理后用location来定向
接近 2 年之前 回复
w172087242
w172087242 回复little_how: 你最后在前端就直接处理掉,js有支持uriencode
接近 2 年之前 回复
w172087242
w172087242 回复一个好人JAVA: 接到请求,对url做处理,你这个是写死的
接近 2 年之前 回复
u011353962
u011353962 回复一个好人JAVA: String name = URLEncoder.encode("啊.txt", "UTF-8"); 然后转发吗?这样试过不行喃
接近 2 年之前 回复
u011353962
u011353962 具体代码该怎么写啊
接近 2 年之前 回复
qq_35718410
qq_35718410   2016.09.13 11:47

为什么非得用中文的url呢?

u011353962
u011353962 需求这样的
接近 2 年之前 回复
qq_29594393
qq_29594393   Ds   Rxr 2016.09.13 12:00

原因是编码格式问题,两边不统一系统获取到的是乱码,所以找不到文件,

u011353962
u011353962 这个我是明白的,关键是怎么解决这个问题,就针对这个例子。你可以尝试动手试一下
接近 2 年之前 回复
u010808544
u010808544   2016.09.13 13:45

String url = "你的访问路径";
服务端 对url解码URLEncoder.encode(url,"UTF-8");
希望能帮到你

yongyong521
yongyong521   2016.09.13 14:11

/*对字符串进行URL编码*/
public String base64URL(String content){
try{
content= Base64.encodeToString(content.getBytes("UTF-8"),Base64.DEFAULT);
content= URLEncoder.encode(content);
}catch (UnsupportedEncodingException e){
e.printStackTrace();
}
return content;
}

yongyong521
yongyong521   2016.09.13 14:11

/*对字符串进行URL编码*/
public String base64URL(String content){
try{
content= Base64.encodeToString(content.getBytes("UTF-8"),Base64.DEFAULT);
content= URLEncoder.encode(content);
}catch (UnsupportedEncodingException e){
e.printStackTrace();
}
return content;
}


yu3224287044
yu3224287044   2016.09.13 15:27

可以设置编码,最好的办法是把中文文件改成英文或拼音

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
Tomcat 无法访问中文文件名的图片
发现中文文件名的文件无法下载、图片无法显示。 需修改 Tomcat 的 server.xml 文件,在 HTTP 的 里加个 URIEncoding="UTF-8" 就可以了。
使用HttpURLConnection下载带空格或中文名字的文件时出现找不到
使用HttpURLConnection下载文件时经常会出现 java.io.FileNotFoundException文件找不到异常,下面介绍下解决办法 首先设置tomcat对get数据的编码:conf/server.xml "8080"  protocol="HTTP/1.1"     connectionTimeout="20000"    redire
访问带有中文路径的网络资源无法访问时需要转换编码
我们在浏览器访问网络资源时url路径默认是utf-8编码,但有时候我们的路径中带有中文,这时候我们直接在浏览器中键入中文路径是无效的。这个时候我们就需要将路径转换为gb2312的编码。比如我要访问“你好.txt”文件,直接在url敲入http://192.168.1.153:8080/math/resources/你好.txt 则出去的浏览器自动将这个url格式转换为(utf-8):/math/
HttpURLConnection无法打开含有中文的链接
HttpURLConnection无法打开含有中文的链接方法:使用 URLEncoder URLEncoder.encode(str, “utf-8”);filepath = “http://localhost/movie/爱的发声练习.srt”String srtname = filepath.substring(filepath.lastIndexOf(“/”) + 1);filepath
配置NGINX支持中文URL 中文文件名或目录404无法访问的解决方法
NGINX不需要象apache那样要单独加载支持中文模块。 # cat /etc/sysconfig/i18n  LANG="en_US.UTF-8" SYSFONT="latarcyrheb-sun16" 如果没有i18n则创建,重启系统。 服务器端字符集如下 # locale LANG=en_US.UTF-8 LC_CTYPE=”en_US.UTF-8″ LC_NUMERIC=”e
Tomcat访问以中文命名的HTML网页报错404
Tomcat访问以中文命名的HTML网页报错404
java web项目 路径url有中文,图片是中文,tomcat404解决方案
项目中文路径,或者中文图片。 解决: 1.打开Tomcat下conf文件夹里的server.xml文件 修改 connectionTimeout="20000" redirectPort="8443" /> 添加进URIEncoding="UTF-8" 最后如下: connectionTimeout="20000" redirectPort="8443" URIEn
解决tomcat下不能访问中文文件夹下或中文文件名问题
今天也写这篇博客是因为我自己也遇到了这个问题,是做java开发的,前端用的是jsp,jsp中的编码是“utf-8”,但是在tomcat下却不能访问中文名称的文件,解决办法如下: 解决问题的核心在于修改Tomcat的配置,在Server.xml文件中添加一个名为URIEncoding的属性,它用于对HTTP请求中的get,post方法传过来的URL进行编码。(前提是jsp的编码也是UTF-8)
解决服务器从url上下载中文名字文件失败的问题
在java web工程中有需要从URL上下载文件到指定路径中,使用过程中发现下载中文附件时 本地执行是正常的   上传服务器后中文附件无法下载 解决方法为:    logger.info("url: " + url);            //20160318 防止中文附件下载出错             int index = url.lastIndexOf("/");  
Nginx for windows 访问路径包含中文
nginx 如果是linux版的 网上有很多资源,基本就是修改linux系统的字符集。 今天遇到的是在windows下也不能访问带有中文的路径,可是windows肯定是支持中文的对吧? 然后发现这个问题好傻,因为nginx和tomcat一样,也是可以配置字符集的,nginx.conf配置出下: server { listen 9120; serve