Dont l'encodage n'Processus.getInputStream() utiliser?

Dans un programme Java, je frayer un nouveau Process via ProcessBuilder.

args[0] = directory.getAbsolutePath() + File.separator + program;
ProcessBuilder pb = new ProcessBuilder(args);
pb.directory(directory);
final Process process = pb.start();

Puis, j'ai lu le processus de sortie standard avec un nouveau Thread

new Thread() {
    public void run() {
        BufferedReader reader = new BufferedReader(
            new InputStreamReader(process.getInputStream()));
        String line = "";
        while ((line = reader.readLine()) != null) {
            System.out.println(line);
    }
}.start();

Toutefois, lorsque le processus de sorties de caractères non-ASCII (comme 'é'), le line a du caractère '\uFFFD' à la place.

Qu'est-ce que l'encodage dans le InputStream retourné par getInputStream (ma plateforme Windows en Europe)?

Comment puis-je changer les choses pour que line contient les données attendues (c'est à dire '\u00E9' pour 'é')?

Edit: j'ai essayé new InputStreamReader(...,"UTF-8"):
é devient \uFFFD

  • BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8"));
  • s'il vous plaît écrire une réponse plutôt qu'un commentaire, si vous voulez répondre
InformationsquelleAutor rds | 2011-12-06