即使终端配置正确,Java也无法显示Unicode字符
我试图在Cygwin中运行的Java应用程序中打印Unicode block character。尽管终端被设置为UTF-8,尽管Bash和Python能够打印字符,但Java只是打印一个?
$ echo $LANG
en_US.UTF-8
$ echo -e "\xe2\x96\x88"
█
$ python3 -c 'print("\u2588")'
█
$ cat Block.java
public class Block {
public static void main(String[] args) {
System.out.println('\u2588');
}
}
$ javac Block.java
$ java -cp . Block
?
这似乎是Cygwin特有的,当从cmd运行时,会显示以下字符:
>java -cp . Block
█
我能做些什么让Cygwin/mintty正确呈现Java的输出吗
更新:
Windows/Cygwin上的Java似乎没有实际使用LANG
环境变量,因此实际上仍在使用cp1252:
$ cat Block.java
public class Block {
public static void main(String[] args) {
System.out.println("Default Charset=" + java.nio.charset.Charset.defaultCharset());
System.out.println("\u2588");
}
}
$ java -cp . Block
Default Charset=windows-1252
?
但奇怪的是,我无法工作:
$ java -cp . Block | iconv -f WINDOWS-1252 -t UTF8
Default Charset=windows-1252
?
共 (0) 个答案