Java linux服务器上缺少货币符号

Java linux服务器上缺少货币符号,java,linux,fonts,currency,Java,Linux,Fonts,Currency,我有一个java应用程序,需要显示货币符号。我在Linux(Ubuntu)服务器上运行 在Linux服务器上LANG=en_GB.UTF-8 以下代码测试该问题: import java.util.Currency; import java.util.Locale; import java.text.NumberFormat; public class SymbolTest { public static void main(String[] args) { System.ou

我有一个java应用程序,需要显示货币符号。我在Linux(Ubuntu)服务器上运行

在Linux服务器上LANG=en_GB.UTF-8

以下代码测试该问题:

import java.util.Currency;
import java.util.Locale;
import java.text.NumberFormat;

public class SymbolTest
{
  public static void main(String[] args)
  {
    System.out.println("Hardcoded Unicode Currency Symbol for GBP [\u00A3] ");
    System.out.println("Currency Symbol for GBP with Locale [" + Currency.getInstance(Locale.UK).getSymbol() + "]");
    System.out.println("Currency Symbol for US with Locale [" + Currency.getInstance(Locale.US).getSymbol() + "]");
    System.out.println("Currency Symbol for FRANCE with Locale [" + Currency.getInstance(Locale.FRANCE).getSymbol() + "]");
  }
}
给出输出:

英镑的硬编码Unicode货币符号

带区域设置的英镑货币符号[英镑]

使用地区[美元]的美国货币符号

法国的货币符号,带区域设置[–1]

我怀疑这是Ubuntu服务器上的语言环境或语言问题。
我应该在linux服务器上安装/配置什么来启用货币符号显示?

我猜问题可能与您实际格式化数字或区域设置的方式有关,而不是与字体有关。有关更多信息,请查看和。排除字体相关问题的一种快速方法是在GSP中键入(必要时复制并粘贴)您要查找的符号,并验证您是否可以在浏览器中查看该符号:

  • $

    • 您的程序正在正确地尝试输出UTF-8,但您的终端显然不知道它应该处于UTF-8模式。所以你的终端出故障了。你在用什么终端


      尝试将程序的输出重定向到一个文件,并使用支持UTF-8的编辑器打开该文件,以验证输出是否正确。

      在系统上安装字体实际上只对呈现字体很重要。可能您的服务器没有呈现字体。(至少,我希望您没有在服务器上运行web浏览器,内存太宝贵,不能浪费在GUI和浏览器上。)使用
      http://localhost/...
      但使用
      http://server/...
      ?或者是在不同的网络浏览器上呈现了不正确的输出?是的,这太模糊了,无法给出有意义的答案。他没有格式化任何数字,我不确定你所说的设置区域设置或字体格式是什么意思?也许你可以检查一下帖子的编辑历史,看看我在对我的答案进行否决表决之前,在我回答问题时提供的信息。这很公平,但在你的答案被编辑之前,我不会改变我的投票。我仍然不明白你所说的格式化语言环境或字体是什么意思。我会核实一下,然后再回来找你。一个想法是——美国地区货币符号的输出是否表明问题不在终端货币符号上——我们的地区为[USD]?在我实际的web应用程序中,所有符号都显示为其缩写(例如,GBP)。这是另一个问题。根据javadoc,
      .getSymbol()
      将根据默认的语言环境返回货币代码,在您的例子中,
      en_GB
      ,这对我来说似乎是非常令人困惑的API设计。仔细想想,虽然这是有道理的,但它意味着美元的符号在locale
      en_GB
      中是
      USD
      ,请尝试
      .getSymbol(locale.US)
      以获得在美国使用的符号。这两方面都是正确的。非常感谢。必须使用Currency.getInstance(Locale.US).getSymbol(Locale.US)来获取$symbol。Currency.getInstance(Locale.US)将货币类型设置为美元,而getSymbol(Locale.US)将确定货币应如何表示的区域设置为getSymbol(Locale.US)->$和getSymbol(Locale.UK)->美元