我正在使用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);
}
答案 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-dd
或Locale.ROOT
作为用于格式化的区域设置。
答案 1 :(得分:3)
您需要更改eclipse控制台输出的编码。 默认情况下它是Cp1252(在我的情况下),将其更改为包含印地语字符的UTF-8。
打开运行配置并转到Common选项卡。您可以在那里找到编码设置。
答案 2 :(得分:0)
在Eclipse中,默认文本文件编码为Cp1252,将其更新为UTF-8。
转到首选项->常规->工作区更新文本文件编码为UTF-8