java bufferedReader, écrit quelque chose de différent de ce qu'il lit
-
07-07-2019 - |
Question
J'ai analysé un texte (code CAL) avec BufferedReader et BufferedWriter en Java, malheureusement, des lignes qui ont été écrites et écrites avec outStream.write (line); ont changé, regardez les captures d'écran:
http://uploadz.eu/images/4qz8mtkm2d9zx3x5ms3n.png h ** p: //uploadz.eu/images/c03hgkrgrmit2ij2mug.png
comme vous le voyez, un caractère spécial a changé les lignes bien que je ne voulais PAS les changer.
pour autant que je sache, Bufferedwriter / Reader devrait fonctionner en mode unicode par défaut.
La solution
Les codes BufferedWriter
et BufferedReader
sont codés en agnostic. Ils ne traitent jamais les codages réels, car ils ne font que mettre en mémoire tampon les lecteurs et les rédacteurs existants.
Maintenant, FileWriter
et FileReader
utilisent le codage système par défaut (urgh). Pour résoudre ce problème, vous devez généralement utiliser une paire InputStream
/ InputStreamReader
ou OutputStream
/ OutputStreamWriter
(éventuellement encapsulée). BufferedReader
/ BufferedWriter
) et spécifiez explicitement le codage.
Vous n'avez pas dit ce que vous lisiez réellement - s'agit-il d'un fichier? Connaissez-vous l'encodage du fichier?
Autres conseils
Vous devez connaître le codage si vous envisagez de traiter le contenu comme du texte (String) ou, lorsque la copie est votre objectif, ou traiter le contenu comme un tableau d'octets.