更改系统区域设置后,我的web应用程序运行良好,但无论何时生成文件(java.text.numberformat.getCurrencyInstance()),文件中显示的货币都是$,而不是系统区域设置的货币€。不过,web应用程序显示正确的货币没有问题。该系统是一个远程ubuntu 10.10服务器。我已经用尽了所有系统区域设置的可能性,在多次重新启动后,我仍然离答案不远。[编辑]我尝试过以下几种:
https://askubuntu.com/questions/89976/how-to-change-the-default-locale-in-ubuntu-10-10-server当问题最初出现时,解决了显示问题。
我已经用localephunch清除了除法语以外的所有其他语言环境。
我已经编辑了/etc/default/locale以包含以下内容:
LANG=fr_FR.UTF-8
LANGUAGE=fr_FR
LC_CTYPE=fr_FR.UTF-8
LC_NUMERIC=fr_FR.UTF-8
LC_TIME=fr_FR.UTF-8
LC_COLLATE=fr_FR.UTF-8
LC_MONETARY=fr_FR.UTF-8
LC_MESSAGES=fr_FR.UTF-8
LC_PAPER="fr_FR.UTF-8"
LC_NAME="fr_FR.UTF-8"
LC_ADDRESS="fr_FR.UTF-8"
LC_TELEPHONE="fr_FR.UTF-8"
LC_MEASUREMENT="fr_FR.UTF-8"
LC_IDENTIFICATION="fr_FR.UTF-8"
LC_ALL=
即使您的远程系统的区域设置为X,并且您从区域设置为Y的远程主机连接,您的区域设置(Y)也可以神奇地转移到当前会话的远程系统(就像TERM一样)。
参见CCD_ 2中的CCD_。
因此,您的远程java应用程序可能会根据您的启动方式获得不同的区域设置。如果它在主机a上重新启动后作为系统服务启动,它将在主机a(LANG="C")上获得它的自然区域设置,但如果您通过ssh从另一台主机B登录,使用不同的区域设置(LANG="pl_pl"在主机B上),从主机a上的ssh会话启动的java应用程序可能会从主机B获得(取决于ssh配置)区域设置。
_____________________________[远程主机A][本地主机B][LANG="C"]-[-[ssh]-[-[LANG="pl_pl"][java app][xterm][_______________][______________]