Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2003
    Messaggi
    177

    readLine() e lettere acccentate

    Ciao a tutti,
    avrei bisogno di un aiuto.
    ho questo semplice codice per leggere un riga da un file

    codice:
            BufferedReader reader = new BufferedReader(new FileReader(file));
            String line = reader.readLine();
    mi sono accorto pero' che il testo non viene interpretato bene ed al posto delle lettere accentate ho degli strani caratteri.
    mi date una mano?

    grazie

  2. #2
    Quote Originariamente inviata da colamart Visualizza il messaggio
    codice:
            BufferedReader reader = new BufferedReader(new FileReader(file));
            String line = reader.readLine();
    mi sono accorto pero' che il testo non viene interpretato bene ed al posto delle lettere accentate ho degli strani caratteri.
    mi date una mano?
    Ci sono diverse questioni.

    Innanzitutto il problema non è a livello di readLine() di BufferedReader. BufferedReader si aspetta di ricevere già "caratteri" che presume siano corretti.
    La questione è che FileReader legge i byte dal file e li interpreta usando in modo fisso il charset (set di caratteri) predefinito della piattaforma. Che se sei su un sistema Windows, perlomeno qui in italia, il charset predefinito del sistema generalmente è il WIN-1252. Che NON è detto sia appropriato per quel file.

    Quindi quello che dovresti usare è FileInputStream poi incapsulato in un InputStreamReader (a cui si specifica il charset) poi incapsulato nel BufferedReader.
    codice:
    BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(file), "UTF-8"));

    Nel codice sopra ho messo come esempio il charset UTF-8. Ma nel tuo caso devi sapere tu quale è il charset con cui è stato scritto quel file. Non lo possiamo sapere noi, non lo può dedurre automaticamente il framework di Java.

    Altra questione: anche ammesso di avere gli oggetti String corretti come caratteri, bisogna vedere dove li stampi/visualizzi. Su console del sistema? La console, perlomeno sui sistemi Windows, generalmente è sempre stata un po' più limitata come font/set di caratteri. Quindi anche qui ci potrebbero essere problemi con caratteri "speciali". Ma qui è un problema di rappresentazione grafica.
    Ultima modifica di andbin; 16-02-2020 a 09:41
    AndreaSenior Java developerSCJP 5 (91%) – SCWCD 5 (94%)
    Il mio nuovo sito-blog italiano sulla programmazione: andbin.it

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2020 vBulletin Solutions, Inc. All rights reserved.