2010-04-20 11 views
7

estoy programando en JavaLa determinación de caracteres por defecto de la plataforma en Java

tengo el código como:

byte[] b = test.getBytes(); 

en la API se especifica que, si no se especifica la codificación de caracteres que tarda el codificación de caracteres de la plataforma por defecto.

Lo que se entiende por "default plataforma de codificación"?

Qué significa la codificación Java o la codificación del sistema operativo?

Si significa OS codifica la ¿Cómo puedo comprobar la codificación de caracteres por defecto de Windows y Linux? ¿Hay alguna forma de que podamos obtener la codificación de caracteres predeterminada usando la línea de comando?

+0

Debe aclarar exactamente lo que quiere decir. Comience con por qué quiere la información. –

+0

Si no puede encontrar las preguntas que hizo anteriormente, simplemente haga clic en cualquier lugar donde aparezca su nombre como un enlace como aquí: [Anand] (http://stackoverflow.com/users/226906/anand) y en la barra superior. Puede encontrar las preguntas allí, tiene preguntas prácticamente no aceptadas (nota: las preguntas se reparten en páginas). Revíselos una vez más y vote/acepte algunos. – BalusC

Respuesta

3

Significa la codificación de caracteres por defecto de la JVM que se está ejecutando en,

Para comprobar la codificación por defecto se puede hacer lo siguiente:

System.getProperty("file.encoding"); 

que devolverá la codificación predeterminada (y el usado por getBytes() arriba).

+2

... pero no te molestes. Hay muy pocas razones válidas para usar 'String.getBytes()', y cuando lo use, siempre debe especificar una codificación en lugar de confiar en la predeterminada. Lo mismo ocurre con los 'nuevos constructores String (byte [])'. –

28

El sistema de propiedad file.encoding es proveedor JVM específica. En este caso específico, solo es aplicable en Sun JVM y es posible que no funcione en JVM de otros proveedores distintos a Sun.

bien utilizar la API de Java SE proporciona Charset#defaultCharset().

Charset defaultCharset = Charset.defaultCharset(); 
+2

Esto me acaba de picar. Estoy depurando un proyecto de eclipse con la codificación de recursos predeterminada establecida en UTF-8. Parece que eclipse configura automáticamente la codificación JVM de las nuevas configuraciones de ejecución (lauch) para que coincidan con la codificación de recursos del proyecto (en mi caso, UTF-8). Pero la codificación de mi SO de máquina de desarrollo (Win7) es Cp1252. Por lo tanto, siempre que controle el proveedor de JVM, usaré la propiedad del sistema "file.encoding" y evitaré Charset.defaultCharset(). Usando jdk 1.7.0_17 (32 bit), por cierto. – Zalumon

+0

Tomo la conclusión de mi comentario anterior. Me acabo de dar cuenta de que "file.encoding" también es UTF-8 en el escenario que describí anteriormente. Ahora no sé cómo averiguar la verdadera codificación del sistema operativo. – Zalumon

+0

BalusC! Muchas gracias por todo su arduo trabajo en esta comunidad. Eres mi héroe personal. De todos modos, ¿tiene una URL para la documentación oficial que describe la propiedad 'file.encoding'? –

Cuestiones relacionadas