Je souhaiterais lire un fichier texte tout balot (mais contenant des caractères accentués) ligne par ligne (séparateur = line feed + carriage return). Jusque là, tout va bien. Mes souvenirs du Basic qui torchait cela en une instruction m'ont plongé dans une confiance pour le moins trompeuse.
Je lis quelques docs java sur le sujet. Elle me disent, grosso-modo : "Mec, c'est de la luge ! Le Basic : enfoncé, tu vas voir ! Utilise un objet de la classe InputStreamReader puis mets lui une baffe avec un objet LineNumberReader. Trop simple !!!"
Je m'exécute :
InputStreamReader flog = new InputStreamReader(new FileInputStream(NomLog),"IBM437" );
LineNumberReader llog = new LineNumberReader(flog);
et plus loin dans le code :
while ((ligne = llog.readLine()) != null) {
N'obtenant pas les résultats escomptés, je fais un System.out.println(ligne) : HORREUR : entre tous les caractères sont intercalés des espaces. Sans parler des caractères accentués totalement hiéroglyphiques.
Je cherche pourquoi et me rends compte qu'il existe la notion de Charset qui encode des données.
MAIS JE M'EN TAPE DE CETTE C.... JE VEUX QUE MES LIGNES, MES CARACTERES SOIENT LUS TELS QU'IL SONT DANS CE P&#%@ DE FICHIER.
C'est pourtant pas compliqué ! Je trouve, après 2 heures de recherches que UFT-16 supprime les espaces (ouf !), mais j'ai toujours du hiéroglyphes.
Ma question est : Y a pas plus simple ?
Ma 2ème question est : Sinon (je reste pessimiste), comment qu'on fait ?
Merci d'avance !!!!