Pergunta

Eu tenho um campo para obter do banco de dados que contém uma string com esta parte e ao obter isso recebo um erro:

"UnicodeEncodeError:O codec 'ascii' não pode codificar caracteres nas posições 12-15:ordinal fora do intervalo(128)"

Eu pesquisei esse erro e outras pessoas estavam tendo problemas devido a unicodes que iniciam algo assim u'\xa0, etc.Mas no meu caso, acho que é devido a caracteres especiais.Não consigo fazer alterações no banco de dados pois não está sob meu acesso.Eu posso simplesmente acessá-lo.

O código está aqui:(na verdade, é uma chamada para url externo)

req = urllib2.Request(url)
req.add_header("Content-type", "application/json")
res = urllib2.urlopen(req,timeout = 50)         #50 secs timeout
clientid = res.read()
result = json.loads(clientid)

Então eu uso a variável de resultado para obter a string mencionada acima e recebo um erro nesta linha:

updateString +="name='"+str(result['product_name'])+"', "
Foi útil?

Solução

Você precisa encontrar a codificação usada para seus dados antes de inseri-los no banco de dados.Vamos supor que seja UTF-8, já que é o mais comum.

Nesse caso, você desejará decodificar UTF-8 em vez de decodificar ASCII.Você não forneceu nenhum código, então presumo que tenha "data".decode().Tentar "data".decode("utf-8"), e se seus dados foram codificados usando essa codificação, funcionará.

Outras dicas

Parece-me que a string já era Unicode.Então remova str() e unicode funções nessa linha.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top