Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    scrittura su file di testo-aggiungere righe

    Qualcuno mi può spiegare perchè eseguendo questo codice

    codice:
     
    public static void scrivi(String item,String NomeFile){
    
        try
            {
            FileOutputStream out=new FileOutputStream(NomeFile,true);
            OutputStreamWriter writer =new OutputStreamWriter (out,"UTF-16");
            BufferedWriter outFile=new BufferedWriter (writer);
            outFile.append(item);
            outFile.newLine();
            outFile.close();
       }
        catch(IOException exc){}
    }
    
        /**
         * Main method launching the application.
         */
        public static void main(String[] args) {
            launch(ProveApp.class, args);
            scrivi("riga1","C:\\Documents and Settings\\user\\Desktop\\pippo.csv");
            scrivi("riga2","C:\\Documents and Settings\\user\\Desktop\\pippo.csv");
            scrivi("riga3","C:\\Documents and Settings\\user\\Desktop\\pippo.csv");
        }
    ottengo una roba di questo tipo:




    cosa sono quei quadratini? come si fa a farli sparire?

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

    Re: scrittura su file di testo-aggiungere righe

    Originariamente inviato da italo2008
    cosa sono quei quadratini?
    Se guardassi il file con un hex-editor (per vedere i codici dei byte), vedresti che all'inizio di ogni pezzo che scrivi vengono inseriti 2 byte FE FF. Questi rappresentano il BOM (byte order mark), vedi la documentazione della classe java.nio.charset.Charset che lo spiega (ma lo spiega meglio Wikipedia qui).

    Il BOM dovrebbe stare solo all'inizio e se un editor/visualizzatore di testo lo "capisce" (dipende dal sw) dovrebbe essere in grado di scriverlo e/o di riconoscerlo e non mostrarlo.

    Originariamente inviato da italo2008
    come si fa a farli sparire?
    "UTF-16BE" o "UTF-16LE"
    Ma così il BOM non viene proprio messo. Puoi scriverlo tu all'inizio una volta sola. Oppure se non c'è devi verificare che all'editor si possa dire: trattalo come Unicode Big-Endian (o Little-Endian).
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Effettivamente, se seguo il tuo consiglio mi scrive le righe correttamente...

    Il file csv che vado a creare lo dovrò poi importare in un'altra applicazione (si tratta di un editor per pannelli operatore),che però non so come interpreta i CSV.. Quello che so è che quando importo un CSV in questo editor, mi chiede di specificare ANSI o UNICODE. Quindi mi aspetto che se io seleziono UNICODE nell'editor dei pannelli, uno dei due possibili charset lo dovrebbe interpretare correttamente, non è così? quindi se decido di non scrivere il BOM specificando UTF-16BE o UTF-16LE, con uno dei due dovrebbe funzionare..... giusto?

    per ora posso solo fare delle ipotesi perchè non ho la possibilità di provare...

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