我正在编写一个非常简单的小示例类来尝试显示Java中NumberFormat类的.getCurrencyInstance()如何工作,但我的输出看起来有点时髦。似乎班级正在运作,但是当它试图打印出货币的实际符号时(比如日元符号或英镑符号),我会得到奇怪的符号。有没有什么办法解决这一问题?我需要导入一些东西才能在我的计算机上获取这些符号吗?
这是我的代码:
import java.util.*;
import java.text.*;
public class CurrencyFormatExample
{
public static void main(String[] args)
{
double convert = 9398.9398;
NumberFormat currencyFormat = NumberFormat.getCurrencyInstance();
System.out.println("American: " + currencyFormat.format(convert));
Locale swedish = new Locale("sv", "SE");
NumberFormat swedishFormat = NumberFormat.getCurrencyInstance(swedish);
System.out.println("Swedish: " + swedishFormat.format(convert));
Locale japanese = new Locale("ja", "JP");
NumberFormat japaneseFormat = NumberFormat.getCurrencyInstance(japanese);
System.out.println("Japanese: " + japaneseFormat.format(convert));
Locale russian = new Locale("ru", "RU");
NumberFormat russianFormat = NumberFormat.getCurrencyInstance(russian);
System.out.println("Russian: " + russianFormat.format(convert));
Locale british = new Locale("en", "GB");
NumberFormat britishFormat = NumberFormat.getCurrencyInstance(british);
System.out.println("British: " + britishFormat.format(convert));
}
}
以下是我得到的输出:
American: $9,398.94
Swedish: 9á398,94 kr
Japanese: ?9,399
Russian: 9á398,94 ???.
British: ú9,398.94
正如你所看到的,显然不对。我能以任何方式解决这个问题吗?
答案 0 :(得分:0)
如果您在Eclipse中执行此代码,请调整窗口>偏好>一般>工作区文本编码为UTF-8
答案 1 :(得分:0)
在jGRASP中:“设置”> “字体”,“字符集”选项卡。将“I / O Charset”更改为UTF-8。在“编译器”选项卡的“标志/参数”子选项卡中,对于“运行”命令的“FLAGS2”,添加“-Dfile.encoding = UTF-8”。
“file.encoding”更改还将更改程序读取和写入的默认编码文件。遗憾的是,当Java连接到管道而不是控制台(大多数IDE将使用管道)时,Java不提供从stdin,stdout和stderr为普通文件I / O和I / O指定不同字符集的方法。因此,如果您希望在程序中默认使用本机编码,并且仍希望UTF-8用于IDE的I / O,则无法执行此操作。因此,IDE自动添加“file.encoding”标志是不明智的,除非有“只使用UTF-8用于所有内容”设置。