Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Problema de enconding

Pessoal é o seguinte, fiz o seguinte código porém ao rodar o arquivo (comando python app.py) um dos prints do programa (que tem acento) esta com erro de enconding. As variáveis da lista nome são apresentadas sem problemas, tendo acento ou não.

Segue o código:

# -*- coding: UTF-8    -*-
def cadastra_nome(nomes):
    print 'Entre com o nome a ser cadastrado'
    novo_nome = raw_input()
    nomes.append(novo_nome)
    nomes = nomes.sort()

def lista_nomes(nomes):
    print 'Lista dos nomes cadastrados'
    for nome in nomes:
        print nome

def remover_nome(nomes):
    if(len(nomes) == 0):
        print 'A lista esta vazia, não é possível realizar essa ação'
    else:
        print 'Digite o nome que deseja remover'
        nome_a_ser_removido = raw_input()
        nomes.remove(nome_a_ser_removido)

def menu():
    nomes = []
    opcao = ''
    while(opcao != '0'):
        print 'Entre com uma das opcoes'
        print '1-Cadastrar novo nome'
        print '2-Listar os nomes cadastrados'
        print '3-Remover um nome da lista'
        print '0-Sair do programa'
        opcao = raw_input()
        if(opcao == '1'):
            cadastra_nome(nomes)
        if(opcao == '2'):
            lista_nomes(nomes)
        if(opcao == '3'):
            remover_nome(nomes)

menu()
4 respostas

Oi Gabriel. Ai é importante verificar:

  • seu editor de texto está usando utf-8 para gravar tambem?
  • seu console esta usando utf-8 como padrao?

se for windows é comum ser o windows-1252 (basicamente um latin1) e aí pode ser o problema, nao no python em si.

Entendo, então seria um "problema" crônico da linguagem depender tanto do console quanto do S.O, o que acaba gerando esses erros de enconding? Existe alguma outra forma de no código forçar o UTF-8 ou só correndo atrás desses outros problemas? Ao meu ver não vale muito a pena ficar buscando configuração no S.O pra mudar a exibição dos acentos.

obs: O python 3 tem o mesmo problema?

solução!

oi Gabriel

Realmente é um problema grande, mas o culpado nao é a linguagem (voce enfrentaria o mesmo problema no python 3)

E isso que voce colocou realmente acontece: as vezes mandamos um software para outra pessoa rodar e no sistema dela nao funciona o encoding direito.

Tem como se adequar a isso? Tem sim

Nao conheco python, mas certamente ha como voce "envelopar" a sua aplicacao e nesse script mae voce garantiria que o seu console/SO esteja rodando com o mesmo encoding esperado pela aplicacao.

Entendi Paulo, muito obrigado pelo esclarecimento!