2011-05-17 24 views

Respuesta

49

Se habrá:

UTF8 

Ver here para las definiciones.

+1

, de hecho, ya he visto esta página. Pero no sabía cuál de los "Nombre canónico para java.nio API" o "Nombre canónico para java.io y java.lang API" debo usar. – astrotouf

+1

¿Pueden funcionar tanto UTF8 como UTF-8? – dlamblin

+5

Ambos funcionan, pero 'UTF-8' se prefiere a' UTF8', el único formato estándar. – Tiny

6

Tanto UTF8 y el trabajo UTF8 para mí.

12

Si, al ejecutar una 1.7.x Oracle JDK HotSpot, en una plataforma Linux en el entorno local sugiere UTF-8 (por ejemplo LANG=en_US.utf8), si no se establece en la línea de comandos con -Dfile.encoding, el JDK por defecto file.encoding y el defecto Charset así:

System.out.println(String.format("file.encoding: %s", System.getProperty("file.encoding"))); 
System.out.println(String.format("defaultCharset: %s", Charset.defaultCharset().name())); 

... rendimientos:

file.encoding: UTF-8 
defaultCharset: UTF-8 

... lo que sugiere el valor predeterminado es UTF-8 en una plataforma de este tipo.

Además, si java.nio.charset.Charset.defaultCharset() encuentra file.encoding no-juego, busca java.nio.charset.Charset.forName("UTF-8"), lo que sugiere que prefiere esa cadena, aunque es bien-alias, por lo que "UTF-8" también funcionará bien.

Si ejecuta el mismo programa en la misma plataforma con java -Dfile.encoding=UTF8, sin la hypen, produce:

file.encoding: UTF8 
defaultCharset: UTF-8 

... señalando que el conjunto de caracteres por defecto se ha canonicalized UTF8-UTF-8.

5

No es una respuesta directa, pero es muy útil si no tiene acceso a cómo se inicia java: puede establecer la variable de entorno JAVA_TOOLS_OPTIONS en -Dfile.encoding="UTF-8" y cada vez que se inicie jvm seleccionará esa opción.