How to set UTF-8 character encoding in Spring boot? How to set UTF-8 character encoding in Spring boot? spring spring

How to set UTF-8 character encoding in Spring boot?


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'

CAUSE

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

#/bin/bashlocale

result of command $ /etc/init.d/test:

LANG=en_US.UTF-8LC_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=

and result of command $ 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=

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

# Source any config fileconfigfile="$(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}"


Based on my answer here: https://stackoverflow.com/a/48952844/986160you need to run:

mvn spring-boot:run -Drun.jvmArguments="-Dfile.encoding=UTF-8"


Finally I found a way so that I can launch Spring-boot project properly.

The solution is use sudo /etc/init.d/myApp start instead of service myApp start