Re: [zope-pt] Re: Problemas de condificação - O Retorno

2007-12-21 Por tôpico Clayton
Engraçado eu já havia visto essa dica [1] já algum tempo mais nunca
encontrei na minha instalação do python o arquivo "sitecustomize.py"
eu sempre alterei o arquivo "python-2.4.4/lib/python2.4/site.py"
mudando a variável encoding para utf-8.

def setencoding():
"""Set the string encoding used by the Unicode implementation.  The
default is 'ascii', but if you're willing to experiment, you can
change this."""
encoding = "ascii" # Default value set by _PyUnicode_Init()


[1] 
http://taniaa.objectis.net/tutoriais/python-zope-plone/erro-ascii-na-migracao/

abraços,

Clayton


Re: [zope-pt] Re: Problemas de condificação - O Retorno

2007-12-21 Por tôpico Daniel Monteiro Basso
Olá,

o Python realmente é mais "exigente" no tratamento de strings que em 
outras linguagens, mas isso ocorre por que ele as trata da forma mais 
correta, e por conseqüência se "apanha" um pouco para aprender como 
funciona por tentativa e erro. O melhor é procurar uma explicação 
detalhada sobre codificação de caracteres com Python (vi algumas pela 
internet), mas vou dar uma super resumida para iniciantes:

ascii: representação de caracteres com apenas 7 bits, não tem caracteres 
com acentos
latin-1 (iso-8859-1): representação com 8 bits, ascii + caracteres com 
acentos, 'ç', etc.
utf-8: representação com número variável de bits, qualquer caracter 
unicode pode ser representado em utf-8

unicode: formato de tratamento de strings em memória, para ser salva tem 
que ser convertida para uma das representações acima.

Em Python, quando tu declara uma string com a syntaxe u'Minha string', 
tu estás na verdade criando um objeto do tipo 'unicode'. Quando usa a 
syntaxe convencional 'Minha string', o interpretador não tem como saber 
em qual conjunto de caracteres ela está representada, e por padrão ele 
assume que seja 'ascii'.

Por exemplo, se digitar o seguinte em um console Python:

u'%s' % 'á'

o interpretador tentaria criar uma string unicode formatada a partir de 
uma string unicode de parâmetro. Como o que foi passado de parâmetro foi 
uma string normal, ela deve ser convertida para unicode primeiro, mas ao 
fazer a conversão o interpretador assume que ela está em ascii, mas 
ascii não tem caracteres com acento, e portanto uma excessão é gerada.

Tu chegaste a mencionar que quando o username estava vazio dava erro, 
isso é por que tu não podes construir um objeto unicode a partir de algo 
diferente de uma string (como é o caso do None que provavelmente ele 
estava recebendo no teu código).

Aqui tem algumas informações sobre encodings interessantes:
http://www.slideshare.net/codebits/unicode-poetry-167368

[]'s

Daniel

-- 
Daniel Monteiro Basso
Líder Técnico do Centro de Inovação
Trino Pólo - Pólo de Informática de Caxias do Sul
http://www.trinopolo.com.br


Re: [zope-pt] Re: Problemas de condificação - O Retorno

2007-12-20 Por tôpico Pablo Nogueira
Erro no acento pode ser problama de encoding do seu site.
Pode ser que você fez uma skin ou template usando latin e o seu plone site
tá utf8.

Ambos tem que ser o mesmo encoding

Para verificar isso vá em
*portal_properties
/site_properties
E veja qual é o charset configurado.
Se o seu produto de skin for de file system de uma olhada no seu editor de
código fonte qual é  o encoding setado.

Veja também qual é o charset que tá sendo renderizado. No seu browser clique
em exibir codigo fonte e veja se tem uma tag assim:
*






Em 20/12/07, SnapNoris <[EMAIL PROTECTED]> escreveu:
>
>   Só uma correção 
>
> eu não coloquei tal:condition="not:exists:username"/>
> no final do código
>
> eu coloquei
> tal:condition="not:username"/>
>
> Se alguém souber uma forma de resolver o problema de codificação do
> plone, eu agradeceria muito.
>
> --- Em zope-pt@yahoogrupos.com.br ,
> "SnapNoris" <[EMAIL PROTECTED]> escreveu
>
> >
> > Gente, vejam este código. Eu fiz ele porque estou com um problema de
> > acentuação no Plone e a solução da problema quando o valor do campo
> > não existe. Da para ver que a solução é uma GAMBIARRA, eu queria saber
> > se alguém sabe como resolver o problema de acentuação no PLONE, porque
> > vai ser muito ruim ficar utilizando essa solução em quase todos os
> > meus campos de formulário.
> >
> > A parte estática da minha página tem acentos numa boa, mas quando
> > alguma coisa DINAMICA é colocada e tem um acento, da erro de
> codificação.
> > Eu utilizei o python:unicode(request.username,'utf-8','') para
> > resolver, mas quando o username está vazio, da erro.
> >
> > Alguém sabe como reslver esse problema no plone?
> >
> >  > tal:define="error errors/username| nothing;
> > username request/username | nothing;"
> > tal:attributes="class python:test(error, 'field
> > error', 'field')">
> >
> > 
> > Nome Completo:
> > 
> >
> >  > i18n:attributes="title title_required;"
> > i18n:translate="label_required">(Required)
> >
> >  > i18n:translate="help_full_name_creation">
> > Enter full name, eg. John Smith.
> > 
> > Validation error output
> >
> >  > id="username"
> > name="username"
> > size="100"
> > maxlength="120"
> > tal:condition="username"
> > tal:attributes="value
> > python:unicode(request.username,'utf-8','');"/>
> >
> >  > id="username"
> > name="username"
> > size="100"
> > maxlength="120"
> > tal:condition="not:exists:username"/>
> >
> > 
> >
>
>  
>



-- 
Pablo Nogueira Oliveira
061-84089333
Brasilia DF