Docker容器tomcat中文名文件404错误不一定是URIEncoding,有可能是LANG=zh_CN.UTF-8引起

文章讲述了作者在使用Docker部署Tomcat时遇到中文文件名无法读取的问题,发现是由于启动时设置了LANG环境变量为zh_CN.UTF-8导致file.encoding变为ANSI_X3.4-1968。通过对比不同Tomcat版本和排除法,确定问题在于启动参数。最后建议在不影响功能的情况下,暂不设置LANG环境变量以解决问题。

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

使用Docker部署tomcat,出现中文名文件无法读取,访问就是404错误。在网上搜索一通,都说是在tomcat的配置文件server.xml中修改一下URIEncoding为utf-8就行,但是我怎么测试都不行。最终发现,是Docker启动时,传入了环境变量LANG="zh_CN.UTF-8"导致。

先说网上通用处理方式。在tomcat根目录的conf文件夹下,修改server.xml文件,增加URIEncoding="UTF-8"配置。变成如下:

    <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
                URIEncoding="UTF-8" useBodyEncodingForURI="true"
               redirectPort="8443" />

但是我测试后,还是不行。中文文件访问,依然是无法找到文件,404错误。

继续寻找各种资料和解决方案,都不行。继续折腾好久,仍然没有解决。网上说的各种都试过。

最后,想想是不是tomcat版本问题。

于是用Docker启动一个最新版本的tomcat 11,啥环境变量和文件映射都不做,一测试,居然没问题。也就是tomcat 11默认就是支持中文文件名。

那么全新的tomcat9呢?什么环境变量和文件映射都不做,一测试,居然也行。原来tomcat本身是没有问题的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值