当前位置: 首页 > 知识库问答 >
问题:

icu4j返回货币代码而不是符号

晋涛
2023-03-14

一、背景

我有一个Android应用程序,我想根据ISO代码和当前语言环境将整数值格式化为货币字符串。我用的是ICU图书馆1.8.1。

例如,如果我有一个值75,ISO代码是“USD”,我想在美国地区看到“$75”,但在法国地区看到“USD75”。

问题

问题是,我总是看到“USD75”,即使我明确地将语言环境设置为US。我以为问题出在我的NumberFormatcurrency实例中,但后来我试图简单地获取货币符号,发现它不正确。由于某种原因,getSymbol()方法总是返回货币代码。

public void test() {
    Locale.setDefault(Locale.US);
    String theISOCode = "USD"
    Currency currency = Currency.getInstance(theISOCode);

    currency.getCurrencyCode(); // "USD". This works as expected
    currency.getSymbol(); // "USD". This looks weird.. Shouldn't it be "$"?
    currency.getSymbol(Locale.US); // "USD". Same here, I expect it to be "$"
    currency.getSymbol(ULocale.US); // still "USD"
}

我还检查了这个链接:Java:基于国际标准化组织4217货币编码的货币符号。看来我的应用程序工作方式有点不同。不确定这是不是库中的一个错误。

问题

对我来说,货币是有道理的。getSymbol()如果您的语言环境是语言环境,则返回“USD”。法国。但是,当我的语言环境是locale时,为什么会返回“USD”。美国?如果我能在不切换库的情况下找到解决方案,那就太好了。

共有1个答案

夏飞鹏
2023-03-14

这个问题原来是库中的一个错误。更新版本后,问题得到了解决。感谢@Omida对此进行调查。

 类似资料:
  • 编辑问题以包括所需的行为、特定问题或错误,以及重现问题所需的最短代码。这将有助于其他人回答这个问题。 代码不返回值,而是返回“?”。编译时我没有遇到任何错误。请协助。 代码需要返回需要支付的剩余金额。输出代码1代码2代码3代码4

  • 这是一篇加密货币的入门文章,是写给没有接触过比特币、加密货币的小伙伴的入门指南,接下来的内容,都将与加密货币相关。 前言 “加密货币就是货币”听起来挺“白痴的”。想想背后的意思,言外之意就是“加密货币可能不是货币”,就非常值得玩味了。事实上,在我接触的很多朋友当中,一开始认为后者的更多。包括我自己,也是经过探究一段时间之后,才认定这个结论的。 惯性定律不仅存在于物质世界,也存在于人类的认知世界。人

  • 我正在尝试使用函数。 而它应该打印$符号或美元? 我使用linux主机。 谢谢

  • 问题内容: 我正在使用我给定的语言环境获取自定义货币格式。但是,这始终包含我不需要的货币符号,我只想要给定语言环境的正确货币数字格式而没有货币符号。 做一个抛出一个异常.. 问题答案: 以下作品。这有点丑陋,但可以履行合同: 您还可以从货币格式中获取模式,删除货币符号,然后从新模式中重构新格式:

  • 以下endpoint以字符串形式返回用户名。 我如何构造它以返回一个json对象,该对象包含一个键,该键的值为该字符串(例如,{“user”:“joeuser”})?

  • 我试过... 但那就不允许便士条目了。 我想要增量按钮控制在英镑上升,但仍然想要输入便士的能力。 谢谢,1DMF