我有一个需要显示货币符号的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() + "]");
}
}
给出输出:
GBP££
的硬编码Unicode货币符号带有区域设置的英镑的货币符号[£]
美国境内货币符号[USD]
带有区域设置的法国货币符号[â]
我怀疑这是Ubuntu服务器上的Locale或Lang问题。 我应该在linux服务器上安装/配置什么才能显示货币符号?
答案 0 :(得分:3)
您的程序正在尝试输出UTF-8,但您的终端显然不知道它应该是UTF-8模式。所以你的终端在这里有问题。你在用什么终端?
尝试将程序的输出重定向到文件,并使用支持UTF-8的编辑器打开该文件,以验证输出是否正确。
答案 1 :(得分:0)
我猜这个问题可能与您实际格式化数字或区域设置而不是字体的方式有关。有关详细信息,请查看Grails reference on formatting numbers as currency和java.util.Currency API doc。排除字体相关问题的快捷方法就是在GSP中键入(复制并粘贴,如果需要)您所使用的符号,并验证您是否可以在浏览器中查看它: