java - codificar - Cambiar la codificación predeterminada para String(byte[])
string to byte array (3)
¿Hay alguna manera de cambiar la codificación utilizada por el constructor String (byte [])?
En mi propio código utilizo String (byte [], String) para especificar la codificación, pero estoy usando una biblioteca externa que no puedo modificar.
String src = "with accents: é à";
byte[] bytes = src.getBytes("UTF-8");
System.out.println("UTF-8 decoded: "+new String(bytes,"UTF-8"));
System.out.println("Default decoded: "+new String(bytes));
El resultado para esto es:
UTF-8 decoded: with accents: é à Default decoded: with accents: é Ã
He intentado cambiar la propiedad del sistema file.encoding
pero no funciona.
Citado de defaultCharset ()
El juego de caracteres predeterminado se determina durante el inicio de la máquina virtual y, por lo general, depende de la configuración regional y el juego de caracteres del sistema operativo subyacente.
En la mayoría de los sistemas operativos, puede establecer el juego de caracteres utilizando una variable de entorno.
Creo que quieres esto: System.setProperty ("file.encoding", "UTF-8");
Resolvió algunos problemas, pero todavía tengo otros. Los caracteres "í" e "Í" no se convierten correctamente si el SO es ISO-8859-1. Solo con la opción JVM al inicio, lo soluciono. Ahora solo mi Consola Java en NetBeans IDE está bloqueando el juego de caracteres al mostrar caracteres especiales.
Debe cambiar la configuración regional antes de iniciar la JVM; ver:
Algunos lugares parecen implicar que puede hacer esto configurando la variable file.encoding al iniciar la JVM, como
java -Dfile.encoding=UTF-8 ...
... pero no lo he intentado yo mismo. La forma más segura es establecer una variable de entorno en el sistema operativo.