Mi problema se explica mejor con un ejemplo: El siguiente programa es ejecutado en un sistema Linux que es no en modo Unicode aún, pero en ISO-8859-15. El entorno se establece de la siguiente manera: [email protected]
Java:. Runtime.getRuntime exec()() pasa argumentos en Unicode cuando debería no
import java.io.*;
import java.util.*;
public class UnicodeTest {
public static void main(String[] args) throws Exception {
Runtime.getRuntime().exec(new String[] { "foobar", "äöü" });
}
}
Cuando puedo compilar este programa en la línea de comandos usando javac
y ejecutarlo, foobar
obtiene el argumento äöü
correctamente, en la norma ISO-8859-1. El mismo programa, ejecutado desde Netbeans, pasa el argumento como Unicode, lo que lo hace inutilizable en el programa llamado. Lo mismo ocurre en Tomcat cuando se llama a ese método. ¿Qué configuración o variable de entorno usa Java para determinar cómo pasar argumentos en Runtime.exec()
?
"cuando no debería" - no es tan redundante. ¿Alguna vez quisieras que los pase incorrectamente? ;) ¿Has comprobado cómo netbeans guarda tu archivo? Netbeans usa javac para hacer la compilación, por lo que debe compilar la misma. –
Peter: Gracias, corrigió el título. Comprobaré si Netbeans crea los mismos archivos de clase, supongo que sí. –
comprobado eso. Ejecutar desde Netbeans genera un resultado incorrecto. La ejecución del mismo archivo de clase (creado por Netbeans) en la línea de comando genera el resultado correcto. –