中国汉字显示为Mac的终端问号(Chinese Characters Displayed as Qu

2019-07-21 22:26发布

我正在尝试从使用Java文件数据库中的一些UTF-8编码的单字符中国。 当我这样做的字符返回为问号。

然而,当我从数据库中显示的字符(使用select * from ... )的字符正常显示。 当我在由中国文字的Java文件打印一个字符串,它们也是正常打印。

我在Eclipse中有这个问题:当我跑的程序,正在打印为问号字符。 然而,当我保存在UTF-8格式的Java文件这个问题得到解决。

运行“区域设置”,在终端目前返回此:

LANG="en_GB.UTF-8"
LC_COLLATE="en_GB.UTF-8"
LC_CTYPE="en_GB.UTF-8"
LC_MESSAGES="en_GB.UTF-8"
LC_MONETARY="en_GB.UTF-8"
LC_NUMERIC="en_GB.UTF-8"
LC_TIME="en_GB.UTF-8"
LC_ALL=

我也曾尝试使用该编译我的java文件:

 javac -encoding UTF-8 [java file] 

但尽管如此,输出为问号。

这是很奇怪怎么会只是有时显示的字符。 有没有人有这样的解释? 甚至更好,如何解决这一问题,使字符显示正确?

Answer 1:

所述System.out的PrintStream不为UTF-8的打印流创建。 你可以将其转换为一个这样的:

import java.io.PrintStream;
import java.io.UnsupportedEncodingException;

public class JavaTest {

    public static void main(String[] args) {


        try{
            PrintStream out = new PrintStream(System.out, true, "UTF-8");

            out.println("Hello");
            out.println("施华洛世奇");
            out.println("World");
        }
        catch(UnsupportedEncodingException UEE){

            //Yada yada yada
        }
    }
}

您还可以设置默认的编码按这里的:

java -Dfile.encoding=UTF-8  -jar JavaTest.jar


文章来源: Chinese Characters Displayed as Questions Marks in Mac Terminal