在基于 Web 的应用程序中,我们想要更改 fa_IR 区域设置中的数字格式。 (波斯语和阿拉伯语数字的 Unicode 与拉丁数字不同)。 java不支持此功能(对于swing基础应用程序,您可以使用形状数字http://docs.oracle.com/javase/tutorial/i18n/text/shapedDigits.html)
无论如何,这个格式化程序会将 ASCII 数字替换为 unicode 波斯数字。算法很简单,进行如下替换
0 >>>> \u06F0
1 >>>> \u06F1
2 >>>> \u06F2
3 >>>> \u06F3
4 >>>> \u06F4
5 >>>> \u06F5
6 >>>> \u06F6
7 >>>> \u06F7
8 >>>> \u06F8
9 >>>> \u06F9
虽然我们可以编写一个简单的转换器并在每次向用户显示数字之前调用它,但我们正在寻找更好的解决方案。我们想要扩展 Java Locale 并向其中添加新的 NumberFormate。
我们相信通过这种方法,我们将用波斯数字显示波斯数字,并且我们仍然会有其他数字格式选项。例如,#0.0## 用于格式化数字。
请告诉我如何扩展java数字格式并将其注册到fa_IR?! 另请告诉我我对格式的假设是否正确。
最佳答案
我认为您可以使用区域设置敏感服务 SPI 来完成此操作:http://docs.oracle.com/javase/tutorial/i18n/locale/services.html
关于波斯语(或阿拉伯语)数字的 Java NumberFormat,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19068106/