我更改系统区域设置后,我的网络应用程序运行正常但是每当生成文件时(java.text.numberformat.getCurrencyInstance())文件中显示的货币都是$而不是€这是系统的货币语言环境。但是,Web应用程序在显示正确的货币时没有问题。该系统是一个远程ubuntu 10.10服务器。 我已经排除了每个系统区域设置的可能性,并且在多次重启后我仍然无法接近答案。 [编辑] 我尝试过以下方法:
https://askubuntu.com/questions/89976/how-to-change-the-default-locale-in-ubuntu-10-10-server 当问题最初出现时解决了显示问题。
我使用localepurge清除除法语之外的所有其他语言环境。
我已编辑/ 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=
答案 0 :(得分:1)
即使您的远程系统将语言环境设置为X,并且您从远程主机连接并将语言环境设置为Y,您的语言环境(Y)也可以神奇地转移到当前会话的远程系统(如TERM所示)。
请参阅SendEnv LANG LC_*
中的man ssh_config
。
因此,您的远程Java应用程序可能会根据您的启动方式获得不同的区域设置。 如果它在主机A上重新启动后作为系统服务启动,它将在主机A(LANG =“C”)上获得它的自然语言环境设置,但是如果您通过ssh从另一个主机B登录,则使用不同的语言环境设置(LANG =主机B上的“pl_PL”)从主机A上的ssh会话启动的java应用程序可能从主机B获得(取决于ssh配置)区域设置。
_______________ ______________ [ remote host A ] [ local host B ] [ LANG="C" ] - - - - [ssh]- - - - [ LANG="pl_PL" ] [ java app ] [ xterm ] [_______________] [______________]