Je ne vois absolument pas pourquoi on parle d'affichage vu que les requêtes en console m'affiche déjà des résultats avec un mauvais encodage.
Ben pas forcément si la console affiche des caractères en UTF-7 par exemple....
Donc... si je reprends:
* On a un fichier texte avec des accents, encodé en ISO-8859-1... Je te fais confiance pour cette partie là (même si c'est la croix et la bannière pour en être sur la plupart du temps).
* La lecture de ce fichier texte se fait par:
BufferedReader br = new BufferedReader(new InputStreamReader(stream, Charsets.ISO_8859_1));
Les données reçues sont des String.
Pour être sur que cette partie là fonctionne: coller un point d'arrêt sur la lecture du String, et vérifier dans le débugger le contenu de celui-ci. A noter qu'un "log" (logcat) pourrait très bien foirer l'encodage, les caractères seraient alors remplacés par des "?" (signalant un caractère ne pouvant pas être encodé correctement).
Le "garbage" signifie qu'à un moment on a dit qu'on lisait un charset, mais ce n'était pas le bon.
String = chaîne de caractère, encodage = dépend de l'implémentation java. Seule certitude: tous les caractères du monde sont supportés (en général, Java utilise UTF-16 en interne, mais peu importe, ça pourrait changer en fonction de l'implémentation le code continuerait de tourner).
Par la suite... (insertion en base, relecture de la base, affichage, log, etc...) il ne sert à rien d'utiliser un quelconque charset. Les divers éléments se chargeront de l'encodage si besoin.
Ensuite si le but est de réecrire dans un fichier texte, alors il faut utiliser le charset au moment de l'ouverture du stream. Et on revient à l'écriture en console (ci-dessus): un caractère n'est pas supporté il y aura un "?" à la place.
Partager