Mysql e Query, Problema Encoding?

  1. ‹ Older
  2. 3 days ago

    Niente, non funziona.

    Quando arrivo a leggere quella Query non restituisce niente. Sel a eseguo su phpMyAdmin funziona.

    Penso che il problema sia quando leggo la riga dal CSV e la divido per estarre il dato che mi serve:

              Dim nomeAtletaCasa as String
              nomeAtletaCasa= rigaIncontro(i).Trim
              
              Dim pos as Integer
              pos = nomeAtletaCasa.InStr("nato a") - 1
              
              nomeAtletaCasa = nomeAtletaCasa.Mid(0, pos).DefineEncoding(Encodings.UTF8)

    La Stringa nomeAtletaCasa è il prbolema. Se non eseguo il MID tutto funziona. Ma quello mi serve.
    Ho inserito il DefineEncoding ma niente da fare.
    Ho utilizzato la funzione ConvertEncoding ma niente da fare.

    Scoraggiato! haha

  3. Massimiliano C

    is not verified Oct 14 Europe (Italy, Bergamo)

    Domenico ...
    leggi tutta la riga...
    tutta tutta
    poi puoi usare
    campo1 = nthfield(nomevariabileriga,"delimitatore",numerodelcampo)
    esempio campo1 = nthfield(nomevariabileriga,";",numerodelcampo)

    poi pulisci le varie schifezze, ad esempio gli apici, gli spazi
    usa campo1 = replaceall(campo1,chr(34),"") per sostituire gli apici
    campo1 = replaceall(campo1,"'","") per sostituire il singolo apice ... etc

    quindi .. usa nthfield per leggere una stringa con i dati separati da quello che vuoi

  4. Massimiliano C

    is not verified Oct 14 Europe (Italy, Bergamo)

    oppure usa split(nomevariabile,"delimitatore") e infili tutto in un array...
    è la stessa cosa ..
    con il csv io ho visto diversi formati;
    il delimitatore di campo è , virgola o ; dipende quanto era ubriaco il programmatore quando ha letto il manuale;
    il qualificatore di campo, di solito è " doppio apice per le stringhe, oppure singolo apice, oppure anche senza; dipende sempre da quanto è stato in osteria il programmatore.
    la convenzione SAAA IBM riporta che CSV ( comma separated value ) deve avere delimitatore comma, quindi la virgola e il testo deve essere qualificato con gli apici, ma come ti ho scritto è sempre un discorso di vecchia osteria
    usa nthfield per usare i singoli campi.
    se non conosci quanti campi sono, conta il numero di volte che il delimitatore c'è nella striga == INSTR (inizio, carattere da cercare) ti dice quante volte il carattere da cercare è presente nella stringa.
    il csv ha sempre nel suo interno un delimitatore.
    anche il file separato con altro delimitatore, che alla fine non è più un CSV usa ad esempio il TAB
    comunque o con SPLIT o con NTHFIELD riesci a fare lo stesso

    Magari non sembra... ma anche io sono appena tornato dall'osteria...

  5. Provato, ma niente. La query non restituisce niente come sempre.

    Grazie dell'aiuto. Cercherò una soluzione "alternativa"

  6. Edited 3 days ago

    Ho provato in tutti i modi, solo se cablo il dato nella query funziona.

    Ora ho provato a convertire in codice ASCII ogni singolo carattere della stringa estratta dal CSV. Per poi riconvertirlo in Stringa partendo dal codice Ascii.

              dim ricerca as String
              dim y as Integer
              for y = 0 to datoFromCSV.Len
                Dim codAscii As Integer
                codAscii = Asc(Lowercase(datoFromCSV.Mid(y, 1))) 
                if codAscii > 0 then
                  ricerca  =  "" + ricerca + Chr(codAscii)
                end if
              next

    Ma anche cosi, dopo che inserisco il risultato nella query .... non funziona.

  7. Massimiliano C

    is not verified Oct 14 Europe (Italy, Bergamo)

    ma che cappero di formato è ?
    non è che hanno installato il server mysql con la codifica di default e ci scrivono in utf8 ? perchè allora otterrai solo capperi e fagioli

  8. So solo che il formato del MySQL sul server è utf8_general_ci
    La cosa curiosa e che su altre tabelle riesco a leggere con i dati letti da un altro CSV.

    Dici che i dati sono stati inseriti non in UTF8?

  9. Massimiliano C

    is not verified Oct 14 Europe (Italy, Bergamo)

    Hai per caso un'altra spiegazione ?

  10. Massimiliano C

    is not verified Oct 14 Europe (Italy, Bergamo)

    Hai provato ad aprile il file con un HEX EDITOR per capire come è codificato ?

  11. 2 days ago

    Antonio R

    Oct 14 Pre-Release Testers, Xojo Pro Europe (Italy)

    io controllerei quel nomeAtletaCasa.Mid(0, pos)

    dovresti partire da 1 con string

  12. Massimiliano C

    is not verified Oct 15 Europe (Italy, Bergamo)

    Dim query as String
    query = "SELECT * FROM atleta WHERE upper(concat(cognome , ' ' , nome)) = '"
    query = query + Uppercase(nomeCognome.Trim) + "'"


    dim connettore as New Connettore
    if connettore.connect then


    Dim recordSet As RecordSet
    recordSet = connettore.db.SQLSelect(query)

    If connettore.db.Error Then
    MsgBox("DB Error: " + connettore.db.ErrorMessage)
    else

    If recordSet <> Nil Then
    While Not recordSet.EOF

    atletaTmp.id = recordSet.Field("id").IntegerValue
    atletaTmp.nome = recordSet.Field("nome").StringValue
    atletaTmp.cognome = recordSet.Field("cognome").StringValue
    recordSet.MoveNext
    Wend

    recordSet.Close
    End If

  13. Ciao Ragazzi,

    vi ringrazio tanto dell'aiuto, non vorrei disturbarvi cosi tanto., e grazie Mille.

    per rispondere ad antonio: Non uso più la funzione MID ma l'ho sostituita con NTHFIELD

    ORa provo a verificare con HEX Editor il formato del file e cerco di capire come è installato il server di Mysql.
    Il database è UTF8_general_ci

    Massimiliano, nella codice che mi hai copiato hai eliminato gli encodings corretto?

    Ora mi rimetto all'opera.

    Grazie

  14. Massimiliano C

    is not verified Oct 15 Europe (Italy, Bergamo)

    Si, esattamente, fagli digerire la query così come è

  15. Ho scoperto il problema.

    Ho fatto come hai detto Massimiliano, ho scaricato un editor HEX.
    Ed è uscito che una stringa è composta in questo modo:

    ELENA ANTEMI

    Ora il CSV ho verificato è in UTF8
    ho provato a fare un ReplaceAll di questi symboli in Ascii ma niente da fare.

    Sto provando a rimuoverli lato codice

  16. Massimiliano C

    is not verified 2 days ago Europe (Italy, Bergamo)
    Edited 2 days ago

    Strano il concat di mysql non fa capperate. Prova ad invertire la funzione nella query... Concat(Uppercase(nome), '', uppercase(cognome))

  17. Massimiliano C

    is not verified 2 days ago Europe (Italy, Bergamo)

    Secondo me uppercase prende il carattere e lo diminuisce di x bit per arrivare alla maiuscola..
    Esempio 'a' = asc(141)... 'A' = asc(101) magari sullo spazio asc(40) chissà cosa esce....

  18. yesterday

    Antonio R

    yesterday Pre-Release Testers, Xojo Pro Europe (Italy)

    Quando leggi il dato dal CSV lo assegni ad una variabile.
    Subito dopo fai il break.
    Controlla nel debugger il tipo di encoding (non modificarlo prima), e prova dalla lista degli encoding a vederlo con encoding diversi fino a trovare quello giusto (forse c'è)

  19. Ciao Ragazzi,

    ho risolto finalmente.

    Quei due caratteri purtroppo erano le CSV sorgente non dentro l'applicativo.
    Ho lasciato l'encoding ad UTF8 ma tagliati quei simboli e riconvertiti con lo spazio. Una cosa non ottimale ma funziona.

    Ho chiesto informazioni su come generavano quei CSV, perché ho visto che sono in UTF8 ma hanno quei simboli all'interno.

    Vi ringrazio per l'aiuto. Spero di poter ricambiare :)

  20. 3 hours ago

    Massimiliano C

    is not verified 3 hours ago Europe (Italy, Bergamo)

    Speriamo Domenico, oggi è andata così e domani non si inventino nuovi delimitatori per i campi ...

or Sign Up to reply!