Valentina Marotto ha scritto:
salve,
premessa:
versione python 2.4 (sia su windows che su linux)

ho un problema con l'encode di caratteri accentati nel caso di inserimento di dati nel database (creato con uno script python) e della loro lettura.

i dati sono inseriti nel db tramite un form html e visualizzati in form html per permetterne la modifica.

il problema e' che se insersico caratteri accentati li accetta (a volte) ma nella visualizzazione per la modifica non li accetta (nella pagina visualizza delle A seguite da numeretti ma nei campi del form non le visualizza per niente).

ho provato di tutto:
stringa.encode('nomeencoding') prima dell'inserimento in database,
# -*- coding: iso-8859-1 -*- all'inizio di ogni script
file sitecustomize.py (con sys.setdefaultencoding ('..') importato nei vari script

in alcuni casi mi da l'errore che 'ascii' non puo' decodificare quei caratteri.

ho provato qualsiasi tipo di encoding...


L'encoding non si sceglie a caso!

Innanzitutto devi ricavare l'encoding usato dal browser che ti manda i dati.
Come ricavare questo dato dipende dalla libreria che usi.

Fatto questo, quello che devi fare รจ:
stringa.decode('nomeencoding')
per convertire la stringa in Unicode.

A questo punto devi vedere che tipo di encoding supporta il database.
Di solito puoi passare (e ricevere) stringhe Unicode, quindi non ci sono problemi.

Infine, quando prelevi le stringhe dal database per poi visualizzarle, devi codificarle usando l'encoding che usi per la tua pagina HTML.
Se il database ti passa stringhe Unicode, basta fare
stringa.encode('nomeencoding').



Saluti  Manlio Perillo
_______________________________________________
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python

Rispondere a