Java linux服务器上缺少货币符号
我有一个java应用程序,需要显示货币符号。我在Linux(Ubuntu)服务器上运行 在Linux服务器上LANG=en_GB.UTF-8 以下代码测试该问题: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
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设计。仔细想想,虽然这是有道理的,但它意味着美元的符号在localeen_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)->美元