Cómo forzar una jarra para el uso(o la jvm que el frasco se ejecuta en) utf-8 en lugar de la codificación predeterminada del sistema

Mi Windows por defecto de la codificación de JDS, y mi Eclipse es totalmente codificado en utf-8.

Así, una aplicación que corre bien en mi Eclipse, se bloquea porque las palabras se vuelven ilegibles cuando se exporta como un archivo jar;

Tengo que escribir la siguiente línea en una .archivo bat para ejecutar la aplicación

   start java -Dfile.encoding=utf-8 -jar xxx.jar    

Ahora mi pregunta es que puedo escribir algo en el código fuente para establecer la aplicación de los usos(o la jvm ejecuta en) utf-8 en lugar de la codificación predeterminada del sistema.

InformationsquelleAutor Aloong | 2010-11-11

2 Kommentare

  1. 17

    Cuando se abre un archivo para lectura, debe especificar explícitamente la codificación que desea utilizar para la lectura del archivo:

    Reader r = new InputStreamReader(new FileInputStream("myfile"), StandardCharsets.UTF_8);

    A continuación, el valor predeterminado de la plataforma de codificación (que se puede cambiar mediante -Dfile.encoding) ya no importa.

    Nota:

    Yo normalmente recomiendo a siempre especificar la codificación explícita de cualquier operación que depende de la norma regional, tales como el carácter de I/O. Muchos métodos de la API de Java por defecto a la plataforma de codificación, que yo considero un mal diseño, porque a menudo la plataforma de codificación no es la de la derecha, además de que se puede cambiar de repente (si el usuario, por ejemplo, interruptores sistema operativo de la localidad), rompiendo su aplicación.

    Así que acaba de decir siempre la codificación que desea.

    Hay algunos casos en los que la plataforma de codificación es la de la derecha (como cuando se abre un archivo, el usuario que acaba de crear para usted), pero son bastante raros.

    Nota 2:

    java.nio.charset.StandardCharsets se introdujo en Java 1.7. Para las anteriores versiones de Java, es necesario especificar la entrada de la codificación como una Cadena (ugh). La lista de posibles codificaciones depende de la JVM, pero cada JVM está garantizado que al menos tienen:

    US-ASCII, ISO-8859-1,UTF-8,UTF-16BE,UTF-16LE,UTF-16.

    • GRACIAS! Antes de utilizar el -Dfile.encoding ,había probado el new String(bytes[],"UTF8"); tal vez no lo uso todas partes por lo que aún no funcionaba. Sólo ahora he intentado de nuevo y de egresados.
    • Feliz funcionó para usted. Por CIERTO, es «UTF-8», no «UTF8».
  2. -1

    Hay otra manera.
    Si no está seguro de cómo te gusta para codificar la entrada y la salida, usted puede guardar la configuración antes de compilar el archivo jar.

    Aquí es un ejemplo de NetBeans.

    Ir Al Proyecto >> Propiedades >> Ejecutar >> VM Opciones y el tipo -Dfile. encoding=UTF-8

    Después de eso, todo está codificado en UTF-8 cada vez que la máquina virtual de Java que se inicia.

    (Creo que Eclipse ofrece la misma posibilidad. Si no, google acaba de VM Opciones).

    Cómo forzar una jarra para el uso(o la jvm que el frasco se ejecuta en) utf-8 en lugar de la codificación predeterminada del sistema

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein