且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

如何在Spring Boot中设置UTF-8字符编码?

更新时间:2023-11-27 17:23:22

解决方案

添加到配置文件(对于应用程序/var/app/app.jar,它将为/var/app/app.conf)在行下面:

SOLUTION

Add to config file (for application /var/app/app.jar it will be /var/app/app.conf) below line:

export LANG='en_US.UTF-8'


原因

问题出在linux systemd(service)中.我用脚本/etc/init.d/test进行了测试:


CAUSE

The problem is in linux systemd (service). I tested it with script /etc/init.d/test:

#/bin/bash
locale

命令$ /etc/init.d/test的结果:

LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=

和命令$ service test的结果:

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=

在spring boot jar文件中是内置的systemd脚本,并且在运行spring boot之前要执行其他操作:

In spring boot jar file is build-in systemd script and before running spring boot is executed among others:

# Source any config file
configfile="$(basename "${jarfile%.*}.conf")"

# Initialize CONF_FOLDER location defaulting to jarfolder
[[ -z "$CONF_FOLDER" ]] && CONF_FOLDER="${jarfolder}"

# shellcheck source=/dev/null
[[ -r "${CONF_FOLDER}/${configfile}" ]] && source "${CONF_FOLDER}/${configfile}"