日期字符串显示问号
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.ROOT
或 Locale.US
作为用于格式化的语言环境。
您需要更改eclipse 控制台输出的编码。
默认情况下它是 Cp1252(在我的例子中),将其更改为包含印地语字符的 UTF-8。
打开您的 运行 配置并转到“常用”选项卡。您会在那里找到编码设置。
在 Eclipse 中,默认的文本文件编码是 Cp1252,请将其更新为 UTF-8。
转到首选项 -> 常规 -> 工作区更新文本文件编码为 UTF-8
我正在使用 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.ROOT
或 Locale.US
作为用于格式化的语言环境。
您需要更改eclipse 控制台输出的编码。 默认情况下它是 Cp1252(在我的例子中),将其更改为包含印地语字符的 UTF-8。
打开您的 运行 配置并转到“常用”选项卡。您会在那里找到编码设置。
在 Eclipse 中,默认的文本文件编码是 Cp1252,请将其更新为 UTF-8。
转到首选项 -> 常规 -> 工作区更新文本文件编码为 UTF-8