日期字符串显示问号

时间:2016-03-16 08:58:26

标签: java eclipse locale

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

enter image description here

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

======以下代码========

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);
    }

3 个答案:

答案 0 :(得分:4)

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

NSString *currentLang = [[NSUserDefaults standardUserDefaults] valueForKey:@"currentLang"];
if([currentLang length]) {
    [[NSUserDefaults standardUserDefaults] setObject:[NSArray arrayWithObjects:currentLang, nil] forKey:@"AppleLanguages"];
    [[NSUserDefaults standardUserDefaults] synchronize];
} else {
    [[NSUserDefaults standardUserDefaults] setObject:[NSArray arrayWithObjects:@"fr", nil] forKey:@"AppleLanguages"];
    [[NSUserDefaults standardUserDefaults] synchronize];
}

正如Alexandar所说,将Eclipse控制台编码更改为包含所有必需字符的编码修复了这一点 - 但我不清楚२०१६-०३-१६ 的格式是否适合该区域设置。通常该格式用于机器可读日期,您应为其指定yyyy-MM-ddLocale.ROOT作为用于格式化的区域设置。

答案 1 :(得分:3)

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

打开运行配置并转到Common选项卡。您可以在那里找到编码设置。

答案 2 :(得分:0)

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