2012-05-22 28 views
11

Los servidores en la máquina Unix siempre están utilizando en como configuración regional predeterminada. siguiente es resultado de la configuración regionalLocale.getDefault() devuelve siempre

LANG=en_US 
LC_CTYPE="C" 
LC_NUMERIC="C" 
LC_TIME="C" 
LC_COLLATE="C" 
LC_MONETARY="C" 
LC_MESSAGES="C" 
LC_ALL=C 

Simplemente no entiendo si LANG se establece correctamente, entonces por qué servidores se inicia con cuarto de configuración regional.

+0

hicieron reiniciar JVM? –

Respuesta

22

En Linux/Unix/Mac, las configuraciones LC_ALL y LANG pueden controlar la configuración regional predeterminada para los programas Java. En Windows, las configuraciones regionales se establecen desde el Panel de control, en Opciones regionales y de idioma.

Cuando la JVM se inicia en un entorno * nix, que va a hacer esto:

  • explorar el entorno de LC_ALL
  • Si LC_ALL no existe, explorar el entorno para LANG
  • Si el Se establece la configuración JVM user.language, utilícela en lugar de las variables de entorno.
  • Si no se establece, por defecto a en_US (creo que esto es el último caso el fracaso)

En su entorno, tiene LC_ALL conjunto de C, que es sólo el entorno nacional C. Básicamente es una alternativa tradicional a los días en que no se usaban las configuraciones regionales.

Puede cambiar LC_ALL en su caja, y reiniciar su JVM, y debe obtener un nuevo valor para java.util.Locale.getDefault().

Ejemplo:

import java.util.Locale; 

public class LocaleTest { 
    public static void main(String[] args) { 
     System.out.println(Locale.getDefault()); 
    } 
} 

Aquí está corriendo:

> LC_ALL=en_UK java LocaleTest 
en_UK 

> LC_ALL=ja_JP java LocaleTest 
ja_JP 

También tenga en cuenta que si se está ejecutando Java 1.7.0-B147, hay un error con el JRE no reconocer la configuración del entorno de configuración regional, y siempre usará la configuración regional predeterminada del sistema.

Informe de error aquí: http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7073906

+0

Gracias birryree. Pero el método getDefault devuelve Locale en función de las propiedades de usuario.lenguaje. Si estas propiedades no se pasan explícitamente mientras se ejecutan servidores como este -Duser.language = en_GB, ¿cómo se configuran estos valores? Estas propiedades obtienen conjuntos cuando el usuario inicia sesión en el sistema o jvm establece estas propiedades en función del entorno. – Delta

+0

@Delta - como mencioné, mirará su entorno local y usará las variables 'LC_ALL' o' LANG' para la configuración regional cuando se inicie la JVM. Si no se establece nada, se establecerá de forma predeterminada en algún valor codificado ('en_US'). – birryree

+0

Gracias birreyree. Voy a hacer este cambio y ver si funciona correctamente. Te mantendré informado. Gracias – Delta

Cuestiones relacionadas