Salve a tutti,
tanto tempo provai a capire senza successo come fare ad impostare il plugin python per QGis in modo che dialogasse col database (postgres o postgis) con l'italica lingua, ma non capii veramente nulla.
Le domande a cui non so rispondere: quale codifica dare al codice python? (le intestazioni dei miei file al momento sono utf-8 #! /usr/bin/env python
# -*- coding: utf-8 -*-) Quale codifica dare al db in postgres o SL? Per ora lascio sempre utf-8 Per postgres Collation e Tipo di carattere?
Un manualino che ci possa capire qualcosa? Ciao a tutti e grassie! Luca _______________________________________________ [hidden email] http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss Questa e' una lista di discussione pubblica aperta a tutti. I messaggi di questa lista non hanno relazione diretta con le posizioni dell'Associazione GFOSS.it. 630 iscritti al 1.12.2012 |
On Wed, Dec 05, 2012 at 12:13:25PM +0100, Luca Mandolesi wrote:
> > quale codifica dare al codice python? Mi associo a quelli che con Python e Unicode e UTF-8 hanno battuto il naso! Il charset con cui scrivi il sorgente non è fondamentale, sebbene sia meglio usare UTF-8 e dichiararlo con lo pseudo-commento all'inizio del file stesso. La parte importante e complicata è gestire correttamente il charset durante la vita delle variabili nel programma. Se può aiutare qui ho preso un po' di appunti, anche se gli esempi sono su MySQL credo che la logica sia la stessa con PostgreSQL: https://www.rigacci.org/wiki/doku.php/doc/appunti/prog/python_unicode In pratica devi sempre assicurarti che le variabili durante la vita del programma siano type() = unicode. Qusto ha il vantaggio - ad esempio - che la lunghezza in una stringa della "a accentata" sia 1 carattere, indipendentemente dalla codifica (in UTF-8 sono due byte). Quindi devi stare attento quando leggi dal database a decodificare le stringhe. Se hai fatto tutto per bene avviene in automatico, altrimenti ti trovi una stringa type() = str e quindi la devi forzare con pippo = pippo.decode('utf-8'). Infine devi stare attento a codificare (in utf-8, mi raccomando!) le stringhe quando ne fai l'output (a schermo, nel database, su file, ecc.). Spero di non averti confuso ulteriormente! -- Niccolo Rigacci - http://www.rigacci.net/ Firenze - Italy Tel. Office: +39-055-9331021, Mobile: +39-327-5619352 _______________________________________________ [hidden email] http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss Questa e' una lista di discussione pubblica aperta a tutti. I messaggi di questa lista non hanno relazione diretta con le posizioni dell'Associazione GFOSS.it. 630 iscritti al 1.12.2012 |
2012/12/5 Niccolo Rigacci <[hidden email]>
Beh, intanto credo di essere sicuro al 99% che questo è sicuramente un mio problema. Da postgres, tramite sqlalchemy ricevo i dati in formato str().... quindi un punto di partenza c'è.
Passare da PG a sqlalchemy ai metodi delle pyqt sicuramente l'inghippo c'è l'ho eccome. Intanto grazie mille per la solidarietà, sentirsi soli è peggio che sentirsi ignoranti sicuramente.
Ciao Luca ps: il plugin è piaciuto a Pechino, quindi pronti per suggerimenti col cinese!!! 8 )
_______________________________________________ [hidden email] http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss Questa e' una lista di discussione pubblica aperta a tutti. I messaggi di questa lista non hanno relazione diretta con le posizioni dell'Associazione GFOSS.it. 630 iscritti al 1.12.2012 |
In reply to this post by Niccolo Rigacci
2012/12/5 Niccolo Rigacci <[hidden email]>:
> On Wed, Dec 05, 2012 at 12:13:25PM +0100, Luca Mandolesi wrote: >> quale codifica dare al codice python? > > Spero di non averti confuso ulteriormente! non avrei saputo spiegarlo meglio :) Ti conviene provare e nel caso chiedere info sui singoli punti. Lo pseudo-commento in cima che imposta la codifica per il parser python io lo metto sempre, a scanso di equivoci. Per il resto devi lavorare con gli unicode, come ha già scritto Niccolò, quindi stare attento alle conversioni da/a oggetti unicode. Ciao e in bocca al lupo! -- Giuseppe Sucameli - Faunalia _______________________________________________ [hidden email] http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss Questa e' una lista di discussione pubblica aperta a tutti. I messaggi di questa lista non hanno relazione diretta con le posizioni dell'Associazione GFOSS.it. 630 iscritti al 1.12.2012 |
Allora...pare....da un primo esperimento aggiungendo all'engine di sqlalchemy un bel ?charset=utf-8
e racchiudendo i metodi di scrittura sulla gui o nel db in un bel unicode() [0] (prima avevo lasciato tutto con str())
che tutto funzioni liscio, senza fare chiamate a metodi tipo .toUtf8() a .decode('utf-8'). Nel database PG le lettere accentate sono passate come tali: una à è salvata come una à. E' corretto?
C'è differenza tra passare un valore racchiuso in un unicode() da fare .decode('utf-8')? Siccome i campi son tantini..non vorrei modificare tutto e poi c'è la fregatura dietro..
Ciao Luca [0] unicode(self.comboBox_nazione.currentText()) 2012/12/5 Giuseppe Sucameli <[hidden email]> 2012/12/5 Niccolo Rigacci <[hidden email]>: _______________________________________________ [hidden email] http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss Questa e' una lista di discussione pubblica aperta a tutti. I messaggi di questa lista non hanno relazione diretta con le posizioni dell'Associazione GFOSS.it. 630 iscritti al 1.12.2012 |
Aggiungo qua più una nota che altro...poi magari se è interesse di altri si potrebbe fare una paginetta wiki per encoding e plugin in qgis
In questo caso, per esempio, nonostante all'interno di un dizionario passi un valore racchiuso in unicode, quando c'è lo spacchettamento per creare le stringhe, il codice non digerisce la cosa, perchè l'accento manda tutto a quel paese.
Però, aggiungendo una u davanti alla stringa, python sa che deve fare una conversione unicode e quindi il codice passa. field_value_string = ", ".join([table + ".%s == u%s" % (k, v) for k, v in params.items()]) _______________________________________________ [hidden email] http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss Questa e' una lista di discussione pubblica aperta a tutti. I messaggi di questa lista non hanno relazione diretta con le posizioni dell'Associazione GFOSS.it. 630 iscritti al 1.12.2012 |
Free forum by Nabble | Edit this page |