[Plone-IT] problema con la codifica dei caratteri

Yuri yurj a alfa.it
Gio 26 Feb 2009 09:53:59 UTC


wipedisk ha scritto:
> ho Zope che si interfaccia a Postgresql 8.3 mediante psycopg.
> il database "bottiglie" su postgresql e' UTF8.
> il "locale" del server linux sul quale girano sia zope che pgsql e'
> it_UTF8.
> la direttiva "client encoding" su postgresql.conf e' UTF8 (anziche' il
> default sql_ascii).
>   

Devi fare attenzione che c'è differenza tra stringhe unicode e stringhe 
encodate utf-8

http://mail.python.org/pipermail/python-list/2004-October/287444.html

Quindi dovresti controllare che tipi di oggetti passa zope a psycopg, e 
viceversa. Forse ha più senso che tu tenga i valori in postgres come 
binary e lasci fare a Zope il resto, oppure encodi/decodi prima di 
salvare in postgres.

yurj a macbook:~$ python
Python 2.5.2 (r252:60911, Jan  4 2009, 17:40:26)
[GCC 4.3.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
 >>> x = u'\xc8'
 >>> print x
È
 >>> y = x.encode('utf-8')
 >>> print y
È
 >>> print x.encode('ascii')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
UnicodeEncodeError: 'ascii' codec can't encode character u'\xc8' in 
position 0:
ordinal not in range(128)
 >>> print y.encode('ascii')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 0: 
ordinal
not in range(128)
 >>> z = x.encode('latin1')
 >>> print z
�
 >>>y
'\xc3\x88'
 >>>


> purtroppo succede che immettendo dall'applicazione zope dei valori nei
> campi che poi vengono trasferiti al database, lettere accentate o
> simboli come quello dell'ordinale (°) italiano, nel database non
> ottengo sempre lo stesso carattere.
>
> anzi... il problema e' che mi ritrovo sempre qualche errore tipo:
> UnicodeDecodeError: 'ascii' codec can't decode byte 0xe0 in position
> 48: ordinal not in range(128)
>
> Ho cercato con google trovando indicazioni piu' che altro su persone
> che hanno il mio stesso problema e non l'hanno risolto (zope) oppure su
> persone che l'hanno risolto (ma si riferivano ad applicazioni con php).
>
> Ho anche provato ad agire sulle impostazioni di Firefox, forzano la
> codifica a UTF8 oppure a quella sua di default, se installato per la
> lingua italiana, ISO 8891-qualcosa (ora non ricordo...) ma niente lo
> stesso. Le accentate diventano "bombe" dentro postgresql quando sono
> richiamate da Zope.
>
>
>
>   
> ------------------------------------------------------------------------
>
> _______________________________________________
> Plone-IT mailing list
> Plone-IT a lists.plone.org
> http://lists.plone.org/mailman/listinfo/plone-it
> http://www.nabble.com/Plone---Italy-f21728.html





Maggiori informazioni sulla lista Plone-IT