一,排查问题经过
1. 检查文件实际名称
在服务器上使用命令确认文件名的实际编码:
2. 系统字符编码设置
确保服务器系统支持UTF-8编码:
java
# 检查当前语言环境
locale
# 输出应包含类似:LANG=en_US.UTF-8 或 LANG=zh_CN.UTF-8
# 临时设置为UTF-8(针对当前会话)
export LANG=en_US.UTF-8
# 永久设置:编辑 /etc/environment,添加:
LANG=en_US.UTF-8
3. Web服务器配置
Nginx
在配置文件中明确指定UTF-8编码:
java
server {
charset utf-8;
...
}
然而这些改了都没生效还是404
二,最终结果
最后在tomcat的脚本文件catalina.sh文件中加入 . /etc/profile 命令后,重启容器就可以识别到中文文件名了。(重点加. /etc/profile 命令)
javascript
# 编辑启动脚本,改用直接设置环境变量
vi /opt/datacenter/project/biframe/start.sh
java
# head /usr/local/tomcat/bin/catalina.sh
#!/bin/sh
. /etc/profile
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
强制重启
javascript
# 强制停止
pkill -9 -f biframe.jar
# 等待几秒确保进程停止
sleep 3
# 重新启动
cd /opt/datacenter/project/biframe/
./start.sh