Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1

    Come usare DataInputStream

    Salve, devo leggere da stream caratteri speciali e ho visto su un manuale che
    DataInputStream sa leggere caratteri in codificaUTF-8.
    codice:
    in2 =new DataInputStream(concerca.getInputStream());
    			
    while((input=in2.readLine())!=null)
    {
     input=in2.readUTF();
     testo.append(input);
    }
    in2.close();out.close();
    nella classe c'è un metodo per leggere UTF
    public final String readUTF() throws IOException

    ma quando scrivo
    codice:
    input=in2.readUTF();
    viene lanciata l'eccezione.
    Sapete come fare ad usare questa classe?

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

    Re: Come usare DataInputStream

    Originariamente inviato da leonardos
    Salve, devo leggere da stream caratteri speciali e ho visto su un manuale che
    DataInputStream sa leggere caratteri in codificaUTF-8.
    DataInputStream (e l'opposto DataOutputStream) servono in genere per trattare dati binari in forma indipendente dalla piattaforma.

    Se devi leggere dati testuali, ad esempio da un file, utilizza le classi apposite con cui si può specificare un apposito charset (es. appunto UTF-8).

    Mi spiego meglio, esempio: devi leggere riga x riga da un file di testo? Apri con FileInputStream, poi fai il wrapping con InputStreamReader e poi con BufferedReader.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  3. #3
    Ho fatto una classe che elimina i caratteri strani ma ho un altro problema:
    siccome devo costruire un DOM dal file.txt scritto ho creato una classe che fa il parser
    codice:
    public CreateDom()
    	{
    		String xmlFile = "C://Vedi.txt";
    		DOMParser parser = new DOMParser();
    		try {
    			parser.parse(xmlFile);
    		} catch (SAXException se) { se.printStackTrace(); }
    		catch (IOException ioe) { ioe.printStackTrace(); }
    		Document document = parser.getDocument();
    
    		try {
    			parser.parse(xmlFile);
    		} catch (SAXException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		} catch (IOException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    		System.out.println(document);
    ma quando lancio il programma mi dà questa eccezione:

    "java.io.UTFDataFormatException: Invalid byte 2 of 2-byte UTF-8 sequence."

    mi sai mica dire il perchè e soprattutto come posso fare per eliminare questo errore?

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254
    Originariamente inviato da leonardos
    ma quando lancio il programma mi dà questa eccezione:

    "java.io.UTFDataFormatException: Invalid byte 2 of 2-byte UTF-8 sequence."
    Innanzitutto deduco che tu stia usando Xerces, giusto?
    Poi comunque bisognerebbe vedere cosa c'è dentro quel file. L'hai scritto tu a mano?
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  5. #5
    Sì uso Xerces. Il file lo scrivo con fileWriter mentre sto leggendo lo stream

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254
    Originariamente inviato da leonardos
    Il file lo scrivo con fileWriter
    Ma con un FileWriter non puoi specificare un charset apposito ... lui usa il charset di default (della piattaforma).
    Fammi capire .... tu scrivi un file XML usando quindi il charset di default (e già qui dipende quale ....) poi in testa al file nella dichiarazione XML spefichi il charset UTF-8???
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  7. #7
    Il server mi rispone con intestazione
    codice:
      <?xml version="1.0" encoding="utf-8" ?> 
    - <ut_response status="ok">
    - <video_list>
    quindi dovrebbe essere in codifica UTF-8 (credo)
    il char set non l'ho modificato.

  8. #8
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254
    Originariamente inviato da leonardos
    Il server mi rispone con intestazione
    codice:
      <?xml version="1.0" encoding="utf-8" ?> 
    - <ut_response status="ok">
    - <video_list>
    quindi dovrebbe essere in codifica UTF-8 (credo)
    il char set non l'ho modificato.
    Sì ma se nel file scrivi dei caratteri speciali usando un charset che non è UTF-8 .... sono poi casini.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  9. #9
    però i caratteri speciali tipo i cinesi o i giapponesi gli levo, ho fatto una classe che valida solo i caratteri che sono europei, quindi non ci dovrebbero essere caratteri speciali

  10. #10
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254
    Originariamente inviato da leonardos
    però i caratteri speciali tipo i cinesi o i giapponesi gli levo, ho fatto una classe che valida solo i caratteri che sono europei, quindi non ci dovrebbero essere caratteri speciali
    Cosa intendi "europei"?? Guarda che gli unici caratteri su cui non ci sono mai dubbi sono i caratteri ASCII (0-127) e basta. Qualunque carattere speciale (es. una 'e' accentata come 'è') vanno trattati con attenzione.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java 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 © 2024 vBulletin Solutions, Inc. All rights reserved.