Tra i vari database a cui Xojo può connettersi, certamente mySQL è tra i più noti e utilizzati. Ecco alcune piccole accortezze per poter lavorare in tranquillità utilizzando gli accenti previsti nella nostra lingua.
Il plugin compreso nell’installazione di Xojo non prevede una conversione di codifica. Questo comporta che in genere, anche se il database è stato definito con una codifica di tipo UTF8, lavorandoci possiamo avere dei problemi.
Vediamo intanto come connettersi ed impostare la connessione in UTF8:
//Prepariamo la connessione dim db as new MySQLCommunityServer db.Host="yourHostAddress" db.UserName="yourUserName" db.Password="yourPassword" db.DatabaseName="yourDatabaseName" |
All’atto della connessione la impostiamo a UTF8
//Impostiamo che la connessione è UTF8 if db.Connect then db.SQLExecute "SET NAMES 'utf8'" |
Per poter leggere il dato di un campo testuale con la codifica corretta (ricordiamoci che Xojo utilizza internamente UTF8 per le stringhe) possiamo scrivere:
//rs è il recordset ottenuto da una query sul db dim mystring as string=rs.field("myField").stringValue.defineEconding(encodings.utf8) |
O ancora meglio in un modulo possiamo scrivere una estensione al field di un recordSet per avere il valore stringa in UTF8:
Public function UTF8Value(extends field as databaseField) as String if field.stringValue.encoding=nil then return field.stringValue.defineEncoding(encoding.utf8) else return field.stringValue end if end function |
In questo modo possiamo tranquillamente lavorare con la stringa ottenuta. Tra l’altro questo problema è subdolo, in quanto una stringa con codifica UTF8 concatenata ad una con codifica nil (come quella ottenuta da un recordSet di mySQL) dà come risultato una stringa con codifica nil con tutti i problemi che possono insorgere.
Tra l’altro questo è uno dei motivi per cui, nel nuovo framework, è stato introdotto il tipo Text.