日期字符串显示问号

date string is showing question marks

我正在使用 Eclipse 4.5.1 Mars。我有一个非常简单的程序,它只使用印地语作为语言环境并以以下格式打印日期:

但是当运行它时,控制台打印出问号。但是如果我删除印地语语言环境,它会打印出正确的日期字符串。为什么?如何解决问号问题?

====== 下面的代码 ========

public static void main(String[] args) {
        Locale.setDefault(new Locale("hi", "IN"));
        Calendar calendar = new GregorianCalendar(TimeZone.getDefault(),  Locale.getDefault());
        // print out date string in console
        System.out.println(getDateStr(calendar.getTime()));

    }

    public static String getDateStr(Date date) {
        SimpleDateFormat sdf =  new SimpleDateFormat("yyyy-MM-dd");
        sdf.setTimeZone(TimeZone.getDefault());
        return sdf.format(date);
    }

只是 Eclipse 控制台不处理印度编号系统。当我在 shell 中 运行 Linux 上的相同代码时,我得到:

२०१६-०३-१६

正如 Alexandar 所指出的,将 Eclipse 控制台编码更改为包含所有必需字符的编码可以解决此问题 - 但我不清楚 yyyy-MM-dd 的格式是否适合该语言环境。通常该格式用于 机器可读 日期,您应该指定 Locale.ROOTLocale.US 作为用于格式化的语言环境。

您需要更改eclipse 控制台输出的编码。 默认情况下它是 Cp1252(在我的例子中),将其更改为包含印地语字符的 UTF-8。

打开您的 运行 配置并转到“常用”选项卡。您会在那里找到编码设置。

在 Eclipse 中,默认的文本文件编码是 Cp1252,请将其更新为 UTF-8。
转到首选项 -> 常规 -> 工作区更新文本文件编码为 UTF-8