Git Bash运行Java程序时非拉丁字符显示乱码问题求助
解决Windows Git Bash中Java输出西里尔文乱码问题
成因
- 编译阶段编码不匹配:若Java源文件以UTF-8编码保存,但
javac默认采用Windows系统编码(通常是GBK/CP936)编译,会导致硬编码的西里尔文字符被错误转码,最终字节码中的字符串本身就存在错误。 - 运行阶段控制台编码冲突:Git Bash虽默认使用UTF-8,但Java的
System.out会继承底层Windows控制台的非UTF-8编码,当Java输出UTF-8格式的西里尔文时,控制台用不兼容的编码解析,就会出现乱码方块。
解决方法
步骤1:编译时指定正确编码
编译源文件时,明确指定编码为UTF-8,匹配源文件的保存编码:
javac -encoding UTF-8 Test.java
步骤2:运行时强制Java输出UTF-8
运行程序时,通过系统属性让Java使用UTF-8输出内容,适配Git Bash的编码:
java -Dfile.encoding=UTF-8 Test
额外确认:锁定Git Bash的UTF-8编码
若上述操作后仍有问题,执行以下命令强制Git Bash使用UTF-8编码:
export LC_ALL=en_US.UTF-8 export LANG=en_US.UTF-8
测试代码示例:
class Test { public static void main(String[] args) { System.out.println("Тестим кириллицу в консоли"); } }
内容的提问来源于stack exchange,提问作者Mint 妬み
相关产品推荐
相关产品推荐

