【问题标题】:date string is showing question marks日期字符串显示问号
【发布时间】:2016-07-02 01:07:51
【问题描述】:

我正在使用 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);
    }

【问题讨论】:

  • 您期望的结果是什么?我的猜测是您使用的字体不支持将使用的印度编号系统...
  • 我不知道我期望的结果是什么,这就是我创建这个程序并想看看它会产生什么样的结果的原因。 (但不是我期望的问号)

标签: java eclipse locale


【解决方案1】:

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

२०१६-०३-१६

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-07-24
        相关资源
        最近更新 更多