访问请求的时候遇到了中文字符,最终找不到页面、指定请求和文件的中文请求乱码问题

"本文分析了在Tomcat服务器中,由于请求的文件路径包含中文字符导致的乱码问题。问题源于Tomcat默认使用ISO-8859-1编码解析URI,与UTF-8编码的文件名冲突,从而引发HTTP 500错误。解决方案是在服务器配置中添加URIEncoding="UTF-8",确保编码一致,避免乱码发生。"
摘要由CSDN通过智能技术生成

项目场景:

在访问请求的时候遇到了中文字符,最终找不到页面、指定请求和文件的中文请求乱码问题


# 问题描述:

访问请求时因为请求了中文文件路径,在Tomcat中无法识别realPath,编码不一致
导致实际的请求连接为
http://localhost:8080/day15_fileUploadAndDownload/FileDownLoadDemo?fileName=%E9%AD%94%E5%85%BD%E4%B8%96%E7%95%8C.mp4
在浏览器中显示的路径为
HTTP Status 500 - C:\Users\yl\eclipse-workspace.metadata.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\day15_fileUploadAndDownload\WEB-INF\download\é­”å
½ä¸–ç•Œ.mp4

java.io.FileNotFoundException: C:\Users\yl\eclipse-workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\day15_fileUploadAndDownload\WEB-INF\download\é­”å
½ä¸–ç•Œ.mp4 (系统找不到指定的文件。)

原因分析:

实际的原因为get请求中,请求的文件名(参数)是由Tomcat读取的
tomcat7中
apache-tomcat-7.0.88/webapps/docs/config/http.html

This specifies the character encoding used to decode the URI bytes,
      after %xx decoding the URL. If not specified, ISO-8859-1 will be used.

默认使用了ISO-8859-1编码

tomcat会对解析出的URL进行重新编码以便servlet重新识别

而读取文件名的时候servlet设置了UTF-8编码,按UTF-8编码读取文件名(参数),实际为get请求乱码问题。


解决方案:

在这里插入图片描述
在服务器的配置xml中,在

<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>

这行代码中添加URIEncoding编码格式

<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443" URIEncoding="UTF-8"/>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值