Charset Firebird 3.0 [malformed string error]
Charset encoding in Firebird 3.0, come è noto in un campo di una tabella di tipo varchar o char è possibile definire il tipo di encoding gestito, oppure non specificarlo.
Tramite Firebird è possibile convertire il contenuto di tale campo da un charset ad un’altro semplicemente con l’istruzione SQL “cast”.
Facciamo un esempio, nella mia tabella “tipologie_articoli”, ho un campo “descrizione” a cui non avevo specificato l’encoding e di base ho importato dei dati in formato ISO8859_1, al momento dello sviluppo del mio servizio Web mi accorgo che la mia applicazione è tutta omogenea in UTF8 e non voglio a livello applicativo fare la conversione. A questo punto posso eseguire la segente istruzione per convertire il contenuto del campo “DESCRIZONE” da ISO8859_1 a UTF8.
Esempio conversione da ISO8859-1 a UTF-8 :
1 2 |
UPDATE tipologie_articoli SET DESCRIZIONE = CAST(CAST(DESCRIZIONE AS varchar(200) character set ISO8859_1) AS varchar(200) character set UTF8) |
Se avessimo invece definito il campo “DESCRIZIONE” con il charset UTF8 al momento dell’importazione dei dati in formato ISO8859_1 avrebbe dato l’errore “malformed string error”.