Il giorno 29 luglio 2013 11:16, Roberto De Ioris <robe...@unbit.it> ha scritto:
> > > salve a tutti, > > ho un problemino con le lettere accentate in una applicazione cgi dal > > quale > > non riesco ad uscire. > > Questo è il mio banalissimo codice che non funziona! > > > > #!/usr/bin/python > > # -*- coding: utf-8 -*- > > s="<html><body><h1>àèìòù</h1></body></html>" > > > > > > print("Content-Type: text/html;charset=UTF-8") > > print('\n') > > print(s) > > > > Nell'error.log di apache ho questo errore: > > UnicodeEncodeError: 'ascii' codec can't encode characters in position > > 16-20: ordinal not in range(128) > > > > Ovviamente tutto funziona se metto dei caratteri ascii al posto delle > > lettere accentate > > > > La domanda è, se setto il coding del file e il charset http in utf-8 e le > > stringhe in python3 sono in unicode, questo ascii codec da dove viene > > fuori? c'è qualche modo (immagino semplice, data la mia ignoranza su > > unicode e gli encoding in generale) per ovviare a questo e visualizzare > > correttamente le lettere accentate e gli altri caratteri non in > > range(128)? > > > > grazie a tutti, > > > > Gianluca Esposito > > _______________________________________________ > > Python mailing list > > Python@lists.python.it > > http://lists.python.it/mailman/listinfo/python > > > > Verifica che sia almeno python 3.2, su quelli prima il modulo cgi e' rotto > (per risolvere dovresti chiudere a riaprire stdin/stdout/stderr con > un'altra codifica, su google trovi sicuramente qualcosa) > > > ok, #!/usr/bin/python # -*- coding: utf-8 -*- import sys import codecs sys.stdout = codecs.getwriter('utf-8')(sys.stdout.detach()) s="<html><body><h1>àèìòù</h1></body></html>" print("Content-Type: text/html;charset=UTF-8") print('\n') print(s) così funziona, grazie Roberto saluti
_______________________________________________ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python