Erro de encode em arquivos com acento para upload !

163 views
Skip to first unread message

Toninho Nunes

unread,
Oct 14, 2013, 2:12:41 PM10/14/13
to django...@googlegroups.com
Olá Pessoal,

Antes de postar, já vasculhei aqui e não consegui achar uma solução para o problema que estou passando, não só aqui como em foruns internacionais, segue as informações:

Ubuntu 12.04 LTS
Django 1.5.1
uwsgi
Nginx 1.x

No ubuntu já certifiquei o locale, já está tudo como pt_br e UTF-8

LANG=pt_BR.UTF-8
LANGUAGE=pt_BR:en
LC_CTYPE="pt_BR.UTF-8"
LC_NUMERIC="pt_BR.UTF-8"
LC_TIME="pt_BR.UTF-8"
LC_COLLATE="pt_BR.UTF-8"
LC_MONETARY="pt_BR.UTF-8"
LC_MESSAGES="pt_BR.UTF-8"
LC_PAPER="pt_BR.UTF-8"
LC_NAME="pt_BR.UTF-8"
LC_ADDRESS="pt_BR.UTF-8"
LC_TELEPHONE="pt_BR.UTF-8"
LC_MEASUREMENT="pt_BR.UTF-8"
LC_IDENTIFICATION="pt_BR.UTF-8"
LC_ALL=pt_BR.UTF-8

No Nginx:

Na seção http { 
  charset utf-8;
}

No Settings.py da aplicação Django:

LANGUAGE_CODE = 'pt-br'
DEFAULT_CHARSET = 'utf-8'

SITE_ID = 1

# If you set this to False, Django will make some optimizations so as not
# to load the internationalization machinery.
USE_I18N = True

# If you set this to False, Django will not format dates, numbers and
# calendars according to the current locale.
USE_L10N = True

# If you set this to False, Django will not use timezone-aware datetimes.
USE_TZ = True

E também no wsgi.py, forcei a usar:

import locale

locale.setlocale(locale.LC_ALL, "")
print locale.getlocale()

E retorna o locale corretamente, até no shell do django estando mostrou o locale correto.

Mas quando tenta via admin mandar um arquivo de foto com acento, lá vem o famigerado erro

'ascii' codec can't encode characters in position 86-87: ordinal not in range(128)

Se eu removo os acentos, o arquivo sobe tranquilo, já tentei as dicas que achei na internet e continua retornando este erro, alguém já passou por experiência e poderia compartilhar para ajudar?

Obrigado.

Toninho Nunes

Toninho Nunes

unread,
Oct 14, 2013, 4:30:44 PM10/14/13
to django...@googlegroups.com
Olá Pessoal,

Investigando o problema, verifiquei que no ambiente de desenvolvimento o erro não era apresentando, então fui verificar o nginx, também não era problema lá, e cheguei a solução, o problema estava no uwsgi que não reconhecia o locale, então forcei o mesmo na carga a identificar o locale colocando os seguintes parâmetros na linha de comando do uwsgi.

–env LC_ALL=’pt_BR.UTF-8′
–env LANG=’pt_BR.UTF-8′

Como uso upstart do Ubuntu apenas acrescentei no final da linha de comando e dei um start no service, fazendo o teste, o arquivo subiu naturalmente, sem qualquer erro de encoding, fica a dica para quem usa esta combinação.

Toninho Nunes

Gileno Alves

unread,
Oct 14, 2013, 7:10:46 PM10/14/13
to django...@googlegroups.com
Eu tive um problema parecido isso é tenso mesmo, no meu caso o problema era só quando o usuário usava windows e tinha acento no nome, resolvi o problema fazendo os ajustes no locale que você mencionou mas no meu caso não uso o uwsgi uso o gunicorn


2013/10/14 Toninho Nunes <toninh...@gmail.com>

--
Você está recebendo esta mensagem porque se inscreveu no grupo "Django Brasil" dos Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um e-mail para django-brasi...@googlegroups.com.
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.



--
Gileno Filho, Web Developer

Toninho Nunes

unread,
Oct 14, 2013, 7:22:20 PM10/14/13
to django...@googlegroups.com
Custou eu descobrir isso, eu estava sub-escrevendo método para minimizar este problema mudando o nome do arquivo com slugfy, mas acho uma tremenda perda de tempo contornar uma situação que não deveria acontecer, apesar do django apresentar o erro, era difícil saber onde encontrar, já que não era só na camada do django o problema.

Toninho Nunes
Reply all
Reply to author
Forward
0 new messages