Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Git Bash Terminal Encoding Issue with Java

Hi so I am on Win10 and Git 2.35.1.

$ git --version
git version 2.35.1.windows.1

I think my Git Bash terminal has some encoding issues. For example if I type java the message I got is all mojibake.

(I am not sure why my Java is printing in another language other than English honestly. I did not configure anything special when I install JRE or JDK.)

$ java
▒÷▒: java [-options] class [args...]
           (ִ▒▒▒▒)
   ▒▒  java [-options] -jar jarfile [args...]
           (ִ▒▒ jar ▒ļ▒)
▒▒▒▒ѡ▒▒▒▒▒:
    -d32          ʹ▒▒ 32 λ▒▒▒▒ģ▒▒ (▒▒▒▒▒▒▒)
    -d64          ʹ▒▒ 64 λ▒▒▒▒ģ▒▒ (▒▒▒▒▒▒▒)
    -client       ѡ▒▒ "client" VM
    -server       ѡ▒▒ "server" VM
                  Ĭ▒▒ VM ▒▒ client.

My locale is UTF-8 though:

$ locale
LANG=
LC_CTYPE="C.UTF-8"
LC_NUMERIC="C.UTF-8"
LC_TIME="C.UTF-8"
LC_COLLATE="C.UTF-8"
LC_MONETARY="C.UTF-8"
LC_MESSAGES="C.UTF-8"
LC_ALL=C.UTF-8

And, when using commands like echo, UTF-8 characters are correctly displayed though:

$ echo 中文中文
中文中文

I tried various methods like git config --global i18n.logOutputEncoding utf-8 and setx LC_ALL C.UTF-8 but java command still prints a mess.

What is the problem?

Is java command using some other encoding all together, not UTF-8?

like image 713
Reimirno Avatar asked Jun 05 '26 21:06

Reimirno


2 Answers

Check first, as in here, if this works:

java -Duser.language=en -Duser.country=US

java -Duser.language=en -Duser.country=US -XshowSettings -version

The second command would show the current settings.

If that work, you can set those options through the environment variable JAVA_TOOL_OPTIONS.
Although, since JDK9+, JDK_JAVA_OPTIONS is a valid alternative.

like image 189
VonC Avatar answered Jun 07 '26 11:06

VonC


Following instructions here, I found a permanent fix: REG ADD "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v JAVA_TOOL_OPTIONS /d -Duser.language=en /t REG_SZ /f and restart computer.

And now when I type java

$ java
Picked up JAVA_TOOL_OPTIONS: -Duser.language=en
Usage: java [options] <mainclass> [args...]
           (to execute a class)
   or  java [options] -jar <jarfile> [args...]
           (to execute a jar file)
   or  java [options] -m <module>[/<mainclass>] [args...]
...
like image 20
Reimirno Avatar answered Jun 07 '26 10:06

Reimirno