2009-06-17 23 views

Respuesta

5

Dependerá de la configuración regional. Diferente configuración regional, diferente codificación predeterminada.

+0

Así que depende de la codificación del sistema operativo anfitrión tiene? –

81

El conjunto de caracteres predeterminado de la JVM es el del sistema en el que se está ejecutando. No hay un valor específico para esto y, en general, no debería depender de que la codificación predeterminada tenga un valor particular.

Se puede acceder en tiempo de ejecución a través de Charset.defaultCharset(), si te sirve de utilidad para usted, aunque en realidad se debe hacer un punto de codificación siempre especificar explícitamente cuando puede hacerlo.

+5

Si tiene razón, me parece un poco extraño http://java.sun.com/javase/technologies/core/basic/intl/faq.jsp#text-representation dice que siempre es UTF-16. –

+30

UTF-16 es cómo se representa el texto internamente en la JVM. La codificación predeterminada determina cómo la JVM interpreta los bytes leídos de los archivos (usando 'FileReader', por ejemplo). – JesperE

+6

Esta respuesta es correcta, pero como referencia, en Linux suele ser "UTF-8", y en Windows suele ser "cp1252". – Jeutnarg

24

Tenga en cuenta que puede cambiar la codificación predeterminada de la JVM utilizando la propiedad con nombre confuso file.encoding.

Si su aplicación es particularmente sensible a las codificaciones (quizás mediante el uso de API que implican codificaciones predeterminadas), debe establecer explícitamente esto en el inicio de JVM a un valor constante (conocido).

+14

Tenga en cuenta que 'file.encoding' se debe especificar en el inicio de la JVM (es decir, como el parámetro cmdline -Dfile.encoding o mediante JAVA_TOOLS_OPTIONS); puedes configurarlo en tiempo de ejecución, pero no importará. Ver http://stackoverflow.com/questions/361975/setting-the-default-java-character-encoding – sleske

19

Hay tres codificaciones "por defecto":

  • file.encoding:
    System.getProperty("file.encoding")

  • java.nio.Charset:
    Charset.defaultCharset()

  • Y la codificación de la InputStreamReader:
    InputStreamReader.getEncoding()

Puede leer más al respecto en this page.

5

estoy seguro de que esto es JVM implemenation específica, pero yo era capaz de "influencia" mi file.encoding predeterminado de JVM ejecutando:

export LC_ALL=en_US.UTF-8 

(ejecutar Java versión 1.7.0_80 en Ubuntu 12.04)

Además, si escribe "locale" desde su consola Unix, debería ver más información allí.

Todo el mérito es de http://www.philvarner.com/2009/10/24/unicode-in-java-default-charset-part-4/

Cuestiones relacionadas