Visualizzazione dei risultati da 1 a 10 su 10

Hybrid View

  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    49
    Quote Originariamente inviata da andbin Visualizza il messaggio

    Inoltre, prova a leggere qui: 5.4 Using Character Sets and Unicode
    è la documentazione ufficiale del Connector/J che spiega in generale l'uso dei charset.

    Prova anche a fare "a mano" una SELECT sul quel campo usando la funzione ORD() di MySQL che ti fornisce il codice del primo carattere della stringa. Fai chiaramente in modo che il carattere incriminato sia appunto il primo.
    Allora....sto debuggando il programma....ho capito che il problema è nella tipologia di dati della colonna che ospita il dato e cioè BLOB. Ho cercato di ovviare inserendo questa modifica:

    codice:
    byte[] domande = res.getString("Domanda").getBytes();
                           String s = new String( domande, "UTF-8");
    dato che la table ha come encoding UTF8-Default collation

    Mysql non lo conosco benissimo...comunque ora provo a fare un SELECT sul campo come dici tu

    Intanto grazie
    Alex
    Ultima modifica di magobin; 01-10-2016 a 15:24 Motivo: errori di ortografia

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da magobin Visualizza il messaggio
    il problema è nella tipologia di dati della colonna che ospita il dato e cioè BLOB.
    Ahhh dovevi dirlo prima che è un BLOB ! il BLOB contiene un flusso "crudo" di byte. Il DB non "sa" nulla di che cosa rappresenta o contiene quella colonna. Se per te contiene del "testo" allora spetta a TE effettuare le conversioni da String a byte[] e viceversa in maniera fissa, uniforme e coerente.

    Quote Originariamente inviata da magobin Visualizza il messaggio
    codice:
    byte[] domande = res.getString("Domanda").getBytes();
    No! getBytes() di String (quello così, senza argomenti) usa il charset di default della piattaforma su cui sta girando la applicazione Java. Quindi NON va bene.

    Usa sempre UTF-8 per queste conversioni.

    Quote Originariamente inviata da magobin Visualizza il messaggio
    dato che la table ha come encoding UTF8-Default collation
    Non ha nulla che fare con i BLOB. I BLOB non hanno un "encoding" di per sé. Quello che contengono lo devi sapere tu e trattare in modo adeguato, non lo sa il DB.

    Quote Originariamente inviata da magobin Visualizza il messaggio
    Mysql non lo conosco benissimo...comunque ora provo a fare un SELECT sul campo come dici tu
    Non serve più di tanto, ora che sappiamo che è un BLOB. Il problema è sicuramente dovuto a tue conversioni inappropriate.

    P.S.: e tra l'altro, se è un BLOB, allora non dovresti usare setString di PreparedStatement né getString del ResultSet.
    P.S. 2: se è solo testo (potenzialmente molto lungo), perché non un CLOB (Character Large OBject)? Che in MySQL si chiamano tecnicamente TINYTEXT, TEXT, ecc....
    Ultima modifica di andbin; 01-10-2016 a 16:15
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    49
    HO risolto....avevo gi� provato ad usare come container LONGTEXT ma, come detto, non conosco molto bene Mysql, quindi cambiavo la tipologia della colonna ma non la collation...ho riprovato ora ad usare LongText cambiando la collection e funziona il tutto.

    Grazie ancora per l'input !!!

    Alex

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.