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

使用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本身是没有问题的,问题出在启动容器时的传参。现在采用排除法,找到问题参数。

当前启动传参如下。

docker run -it --name tomcat-test  --rm -p 8888:8080 \
-e TZ="Asia/Shanghai" \
-e LANG="zh_CN.UTF-8" \
-e JAVA_OPTS="-Dfile.encoding=utf-8" \
tomcat:9.0.16-jre8

逐一排查后,发现传参-e LANG="zh_CN.UTF-8"后,会导致file.encoding变成ANSI_X3.4-1968,而不是默认的UTF-8。

写个test.jsp文件,拷贝到容器内tomcat的ROOT目录下,直接访问,输出一下各种参数。

<%@ page language="java" contentType="text/html;charset=UTF-8"pageEncoding="UTF-8" %>
<%@ page import="java.util.Date" %>
<%@ page import="java.util.TimeZone" %>
<%@ page import="javax.servlet.ServletContext" %><!DOCTYPE html>
<html lang="zh-cn">
<head><meta charset="UTF-8"><title>容器环境测试测试</title>
</head>
<body><%// 获取当前时间Date currentDate = new Date();// 获取当前时区TimeZone timeZone = TimeZone.getDefault();// 获取ServletContext对象ServletContext context = request.getServletContext();// 获取当前JSP页面的真实路径String realPath = context.getRealPath("/");String contextPath = context.getContextPath();String serverInfo = context.getServerInfo();String virtualServerName = context.getVirtualServerName();
%><p>当前时间:<%= currentDate.toString() %></p>
<p>当前时区: <%= timeZone.getDisplayName() %></p>
<p>物理路径RealPath: <%= realPath %></p>
<p>环境路径ContextPath: <%= contextPath %></p>
<p>服务端容器: <%= serverInfo %></p>
<p>虚拟服务名称: <%= virtualServerName %></p>
<p>当前字符集编码file.encoding: <%= System.getProperty("file.encoding")  %></p>
<p>Java环境变量java.opts: <%= System.getenv("JAVA_OPTS") %></p>
<p>Java环境变量sun.jnu.encoding: <%= System.getProperty("sun.jnu.encoding") %></p>
</body>
</html>

输出结果,如下图所示。 文本编码不是UTF-8,变成了ANSI_X3.4-1968。

当启动容器时,去掉该环境变量传入,就可以识别中文名文件了。

由于这个问题折腾了太久,暂时也就不想去深究为什么。想想这个LANG变量对目前功能没啥影响,就先不传入了吧。后面遇到影响了再说。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/307270.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

关于Excel中自动填充的功能,看这篇文章就差不多了

序言 这篇文章介绍了Excel的自动填充功能。你将学习如何在Excel 365、2021、2019、2016、2013及更低版本中填充一系列数字、日期和其他数据,创建和使用自定义列表。这篇文章还让你确保你知道关于填充柄的一切,因为你可能会惊讶于这个小选项的强大。 当时间紧迫时,每一分钟…

(二)ffmpeg 下载安装以及拉流推流示例

一、ffmpeg下载安装 官网&#xff1a;https://www.ffmpeg.org/ 源码下载地址&#xff1a;https://www.ffmpeg.org/download.html#releases 下载源码压缩包 下载完成之后解压并在该目录下打开命令窗口 安装依赖环境&#xff1a; sudo apt-get install build-essential nasm …

防火墙操作!

当小编在Linux服务器上部署好程序以后&#xff0c;但是输入URL出现下述情况&#xff0c;原来是防火墙的原因&#xff01;&#xff01; 下面是一些防火墙操作&#xff01; 为保证系统安全&#xff0c;服务器的防火墙不建议关闭&#xff01;&#xff01; 但是&#xff0c;我们可…

麒麟 V10 离线 安装 k8s 和kuboard

目录 安装文件准备 主机准备 主机配置 修改主机名&#xff08;三个节点分别执行&#xff09; 配置hosts&#xff08;所有节点&#xff09; 关闭防火墙、selinux、swap、dnsmasq(所有节点) 安装依赖包&#xff08;所有节点&#xff09; 系统参数设置(所有节点) 时间同步…

C#Winform使用扩展方法自定义富文本框(RichTextBox)字体颜色

实现效果 调用方法 rtxtLog.AppendTextColorful(richTextBox1,DateTime.Now.ToString(), Color.Red); 完整代码如下 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using Sys…

CentOS7 boa服务器的搭建和配置

环境是CentOS7&#xff0c;但方法不局限于此版系统&#xff0c;应该是通用的。 具体步骤如下&#xff1a; 1. 下载boa源码 下载地址: Boa Webserver 下载后&#xff0c;进入压缩包所在目录&#xff0c;进行解压&#xff1a; tar xzf boa-0.94.13.tar.gz 2. 安装需要的工具b…

了解虚拟路由器冗余协议(VRRP)

虚拟路由器冗余协议&#xff08;VRRP&#xff09;是一种被广泛使用的网络协议&#xff0c;旨在增强网络的可靠性和可用性。对于网络管理员和工程师来说&#xff0c;了解VRRP是确保网络能够实现无缝故障转移和保持不间断连接的关键。本文将深入探讨VRRP的基础知识&#xff0c;包…

研究了一款Vue2开发的Markdown编辑器

最近突然喜欢开始写作了&#xff0c;写笔记&#xff0c;写日记&#xff0c;写总结&#xff0c;各种写。所以&#xff0c;想要打造一个自己喜欢的编辑器&#xff0c;于是开始研究。 首先来看看我从Github丄扒拉到的这个开源的代码&#xff1a; 运行起来以后效果是这样的&…

Vue项目打包配置生产环境去掉console.log语句的方法

一、Vue2项目 使用webpack内置的 terser 工具&#xff0c;在vue.config.js文件加上相应的配置即可。 二、Vue3项目 同样是使用 terser 工具&#xff0c;不过vite没有内置terser&#xff0c;需要手动安装依赖 安装完后在vite.config.js文件加上相应的配置即可。 2024-4-9

Xlinx相关原语讲解导航页面

原语就是对FPGA底层器件的直接调用&#xff0c;与IP功能是类似的&#xff0c;将原语的参数变成IP配置时的GUI界面参数&#xff0c;可能会更加直观。IP的缺陷在于繁杂&#xff0c;比如SelectIO IP内部包含IDDR、ODDR等等IO转换的功能&#xff0c;如果只想使用单沿转双沿一个功能…

多因子模型的数据处理

优质博文&#xff1a;IT-BLOG-CN 数据处理的基本目的是从多量的、可能是杂乱无章的、难以理解的数据中抽取并推导出有价值、有意义的数据。特别是金融数据&#xff0c;存在数据缺失&#xff0c;不完整以及极端异常值等问题&#xff0c;对于我们的分析和建模影响很多。 对于我…

逆境突围:网络安全寒冬下售前的效率革命与AI赋能

在网络安全行业遭遇严冬之际&#xff0c;众多企业纷纷勒紧裤腰带&#xff0c;竭力挺过这段寒风凛冽的时期。我朋友所在的网安公司亦未能幸免于这场经济寒潮的冲击&#xff0c;不少售前同事无奈地提前踏上了职业生涯的“毕业”之路&#xff0c;留下的人则如同雪中孤松&#xff0…

【配电网故障定位】基于二进制蝗虫优化算法的配电网故障定位 12节点配电系统故障定位【Matlab代码#75】

文章目录 【获取资源请见文章第5节&#xff1a;资源获取】1. 配电网故障定位2. 二进制蝗虫优化算法3. 部分代码展示4. 仿真结果展示5. 资源获取 【获取资源请见文章第5节&#xff1a;资源获取】 1. 配电网故障定位 配电系统故障定位&#xff0c;即在配电网络发生故障的时候&am…

视频号小店究竟有什么秘密,值得商家疯狂入驻,商家必看!

大家好&#xff0c;我是电商花花。 我们都知道视频号和抖音本身都是一个短视频平台&#xff0c;但是随着直播电商的发展&#xff0c;背后的流量推动逐步显露出强大的红利市场和变现机会。 视频号小店流量大和赚钱之外&#xff0c;还非常适合普通人创业。 这也使得越来越多的…

【JAVA基础篇教学】第十篇:Java中Map详解说明

博主打算从0-1讲解下java基础教学&#xff0c;今天教学第十篇&#xff1a;Java中Map详解说明。 在 Java 编程中&#xff0c;Map 接口代表了一种键值对的集合&#xff0c;每个键对应一个值。Map 接口提供了一系列操作方法&#xff0c;可以方便地对键值对进行增删改查等操作。本…

【微信小程序】canvas开发笔记

【微信小程序】canvasToTempFilePath:fail fail canvas is empty 看说明书 最好是先看一下官方文档点此前往 如果是canvas 2d 写canvas: this.canvas,&#xff0c;如果是旧版写canvasId: ***, 解决问题 修改对应的代码&#xff0c;如下所示&#xff0c;然后再试试运行&#x…

要不是情绪管理得当,我早就拍桌子走人了!!!——早读(逆天打工人爬取热门微信文章解读)

身体是革命的本钱&#xff01; 引言Python 代码第一篇 洞见 中年以后 换个脾气 就是换条命第二篇 人民日报 来了新闻早班车要闻社会政策 结尾 年轻时的我们 如同初生的牛犊 无所畏惧 岁月却教会我们谨慎与尊重 引言 左边突出的神经开始疯狂跳动 不断提醒我 你该休息了 不能再放…

pyside6的QSpinBox自定义特性初步研究(二)

当前的需求是&#xff0c;蓝色背景的画面&#xff0c;需要一个相对应色系的QSpinBox部件。已有的部件风格是这样的&#xff0c;需要新的部件与之般配。 首先新建一个QDoubleSpinBox&#xff0c;并定义其背景色和边框&#xff1a; QDoubleSpinBox { color: white; border:1px…

uniapp 地图分幅网格生成 小程序基于map组件

// 获取小数部分 const fractional function(x) {x Math.abs(x);return x - Math.floor(x); } const formatInt function(x, len) {let result x;len len - result.length;while (len > 0) {result 0 result;len--;}return result; }/*** 创建标准分幅网格* param …

【科研入门】评价指标AUC原理及实践

评价指标AUC原理及实践 目录 评价指标AUC原理及实践一、二分类评估指标1.1 混淆矩阵1.2 准确率 Accuracy定义公式局限性 1.3 精确率 Precision 和 召回率 Recall定义公式 1.4 阈值定义阈值的调整 1.5 ROC与AUC引入定义公式理解AUC算法 一、二分类评估指标 1.1 混淆矩阵 对于二…