Visualizzazione dei risultati da 1 a 6 su 6

Discussione: lettura testo Unicode

  1. #1

    lettura testo Unicode

    Salve

    Ho bisogno di leggere riga per riga un file di testo (.csv) scritto con codifica UNICODE (contiene caratteri in alfabeto cirillico).

    Ho usato il metodo ReadLine della clesse BufferedReader, ma ho notato con raccapriccio che non legge un bel niente. Mi legge le varie righe solo se salvo il testo con una codifica diversa (ad esempio ANSI). Ma io devo lavorare su UNICODE... qualcuno sa darmi una dritta?


    grazie..

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: lettura testo Unicode

    Originariamente inviato da italo2008
    Ho usato il metodo ReadLine della clesse BufferedReader, ma ho notato con raccapriccio che non legge un bel niente.
    BufferedReader viene costruito passando un Reader .... quale Reader hai usato??? FileReader? Quest'ultimo usa in modo fisso il charset della piattaforma!
    Crea un FileInputStream, incapsulalo in un InputStreamReader (ed è a questo che devi specificare il charset!) e quindi ancora incapsulalo finalmente nel BufferedReader.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    scusa ma sono ignorante...

    se ho capito bene, questo sarebbe più meno quello che mi hai detto di fare:

    codice:
            try
            {
            FileInputStream in=new FileInputStream (sourceCSV);
            InputStreamReader reader =new InputStreamReader (in, String charsetName);
    
            BufferedReader inFile = new BufferedReader (reader);
            int numRiga=0; //riga corrente del file CSV
            
            while (inFile.readLine() != null){
                String riga=inFile.readLine();
                
    
    ecc ecc ecc
    dove sourceCSV è il percorso del file da leggere. Che valore devo dare alla stringa charsetName che passo a parametro al costruttore di InputStreamReader?

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da italo2008
    Che valore devo dare alla stringa charsetName che passo a parametro al costruttore di InputStreamReader?
    Es. "UTF-16", "ISO-8859-1" ..... un charset insomma.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    OK, ora riesco a leggere icaratteri correttamente, però ho un altro problema. Ho scritto questocodice per contare le righe del testo:

    codice:
     
        private int LineCounter (String fileName){
            int ris=0;
            try
            {
            FileInputStream in=new FileInputStream (fileName);
            InputStreamReader reader =new InputStreamReader (in,"UTF-16");
    
            BufferedReader inFile = new BufferedReader (reader);
    
            while (inFile.readLine() != null){
                inFile.readLine();
                ris=ris+1;
                }
            inFile.close();
            }
            catch (FileNotFoundException exception){
            }
            catch (IOException exception){}
    
            return ris;
        }
    Il testo da leggere è il seguente:

    codice:
     
    "Details;Size;Italiano;Inglese;Russo"
    "PG-1;41 Chars;Ciao;Ciao;Ciao"
    "TC-1-4;11 - 16 Chars;MENU PRINCIPALE;MAIN MENU;ГЛАВНОЕ МЕНЮ"
    "PG-2;41 Chars;Menu principale;Main menu;Menu principale"
    "ST-2-ec;4 - 5 Chars;Ora;Hour;Час"
    "ST-2-f1;4 - 5 Chars;Data;Date;Дата"
    "ST-2-d;19 - 26 Chars;MENU PRINCIPALE;MAIN MENU;ГЛАВНОЕ МЕНЮ"
    Il metodo mi ritorna 4 anzichè 7, e se visualizzo ad una ad una le righe che legge,noto che legge la 2°,la 4°, la 6° e poi una stringa vuota.... perchè? non mi sembra di aver sbagliato il codice del ciclo...

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da italo2008
    Il metodo mi ritorna 4 anzichè 7
    Hai usato 2 readLine!!! Basta solo quella nella condizione del while. Non anche una dentro il while!
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

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 © 2026 vBulletin Solutions, Inc. All rights reserved.