2 votes

Comment écrire des caractères spéciaux dans un fichier texte

Ceci est mon code, j'essaie d'écrire un fichier texte en remplaçant "Up" et "Right" par ↑ et →. Le problème est que la sortie du fichier texte est : "→ ↑" (ce n'est pas ce que je voulais) et la sortie de la console est "↑ →".

private static void print(String t){
    File log = new File("a.txt");
    String raw = t;
    raw = raw.replaceAll("Up", " \u2191 ");     //↑
    raw = raw.replaceAll("Right", " \u2192 ");  //→

    try{
        FileWriter fileWriter = new FileWriter(log, true);
        BufferedWriter bufferedWriter = new BufferedWriter(fileWriter);
        bufferedWriter.write(raw + "\n");
        System.out.println(raw + "\n")
        bufferedWriter.close();

    }catch(IOException e) {}
}

Je pense que cela peut être une erreur d'encodage, mais je ne sais pas comment la corriger.

0voto

pkpnd Points 5044

Tout d'abord, il est préférable de spécifier l'encodage (vous voulez probablement UTF-8) avant d'écrire votre fichier.

private static void print(String t){
    File log = new File("a.txt");
    String raw = t;
    raw = raw.replaceAll("Up", " \u2191 ");
    raw = raw.replaceAll("Right", " \u2192 ");

    try{
        BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(log), "UTF-8"));
        bufferedWriter.write(raw + "\n");
        System.out.println(raw + "\n");
        bufferedWriter.close();

    }catch(IOException e) {}
}

Ensuite, vous devez vous assurer que votre visualiseur de fichiers est également configuré en UTF-8. Il semble que votre visualiseur de fichiers pourrait afficher le fichier en ANSI à la place. Changer ce paramètre dépend de votre visualiseur de fichiers -- essayez de rechercher sur Google "[le nom de votre visualiseur de fichiers] UTF-8".

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X