平台会显示成“??
问题描述: 正常录入人员信息后,系统会显示成“??
原因:系统 locale 未正确设置
检查系统 locale 配置
locale
输出:
LANG=
LC_CTYPE=”POSIX”
LC_NUMERIC=”POSIX”
LC_TIME=”POSIX”
LC_COLLATE=”POSIX”
LC_MONETARY=”POSIX”
LC_MESSAGES=”POSIX”
LC_PAPER=”POSIX”
LC_NAME=”POSIX”
LC_ADDRESS=”POSIX”
LC_TELEPHONE=”POSIX”
LC_MEASUREMENT=”POSIX”
LC_IDENTIFICATION=”POSIX”
LC_ALL=
系统 locale 为 POSIX(等效于 ASCII),JVM 启动时默认继承该编码。
修复方案
修改系统 locale 配置
# 编辑系统 locale 配置文件sudo vi /etc/locale.conf# 写入以下内容LANG=en_US.UTF-8
配置 shell 环境变量
由于部分环境或 shell 配置可能覆盖系统 locale,需要在用户的环境变量文件中显式设置:
# 追加到 ~/.bash_profileecho 'export LANG=en_US.UTF-8' >> ~/.bash_profile# 立即生效source ~/.bash_profile
验证环境变量
# 确认当前 shell 的 localelocale# 确认 LANG 变量echo $LANG
确保输出中 LANG=en_US.UTF-8
重启服务
在 已设置正确 LANG 的当前 shell 中 重启服务,确保新 JVM 进程继承正确的编码:
sh /home/seekcy/chemical-locate/wwyt-server/service-server.sh restart
验证修复
# 确认新进程的编码jinfo -sysprops $(pgrep -f wwyt-server | head -1) | grep file.encoding
期望输出:
file.encoding = UTF-8
转载请注明作者和出处,并添加本页链接。
原文链接:
//svn.seekcy.com/911