使用java.text.NumberFormat解析日语货币字符串

时间:2011-05-06 12:44:04

标签: java unicode cjk number-formatting

我在使用Java解析日语货币字符串时遇到问题。似乎日元符号与java认为它不应该匹配。这是我的代码:

NumberFormat f = NumberFormat.getCurrencyInstance(Locale.JAPAN);
String s = "¥200";
Number n = f.parse(s);

这将抛出异常:

Exception in thread "main" java.text.ParseException: Unparseable number: "¥200"
at java.text.NumberFormat.parse(NumberFormat.java:333)

似乎java对Yen使用了不同的符号(“\ uFFE5”)

有人可以帮忙吗? 感谢

2 个答案:

答案 0 :(得分:4)

NumberFormat f = NumberFormat.getCurrencyInstance(Locale.UK);
        String s = "£200";
        Number n = f.parse(s);

    NumberFormat f = NumberFormat.getCurrencyInstance(Locale.US);
    String s = "$200";
    Number n = f.parse(s);

会产生同样的影响。 NumberFormat适用于数字,而不是字符串字符,即如果允许NumberFormat仅解析整数(默认值),则需要删除货币符号。你能做的是:

NumberFormat f = NumberFormat.getCurrencyInstance(Locale.JAPAN);
String s = "¥200";
f.setParseIntegerOnly(false);
Number n = f.parse(s);

这将允许日元字符通过。尝试使用$,它失败了。但是将本地更改为美国,允许$,而日元则不允许。

答案 1 :(得分:3)

尝试将字符“¥”(0xC2A5)更改为“¥”(0xEFBFA5)。
“¥”(0xC2A5)是日语语言环境中的特殊字符。