• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

fnds

Caracteres especiais + Consola do windows = Erro!

13 mensagens neste tópico

Sabemos todos que os acentos e a consola do windows não se dão bem, como faço para enviar caracteres especais, recebidos pela consola do Windows, através de socket?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Para ser mais simples:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

open('a.txt', 'wb').write(raw_input())

E eu escrevo 'O djthyrax não percebe nada disto!'  :)

Corre tudo bem, mas o ã não aparece.

E se meter:

open('a.txt', 'wb').write(u'%s' % raw_input())

Aparece o erro do costume:

UnicodeDecodeError: 'ascii' codec can't decode byte 0xc6 in position 0: ordinal not in range(128)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Huum... eu acho que isso é limitação da consola mesmo... vê se não consegues alterar o encoding da propria consola..

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O problema é que com gui o erro é o mesmo, ainda só experimentei em tk, mas nas outras deve de ser o mesmo....

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Desculpa mas so agora reparei na tua pergunta experimenta assim aqui funcionou bem imprime todos os caracteres "diferentes" como [Ç, ç, ô,â,õ,ã] etc....


a=raw_input("intruduza uma palavra com muitos acentos: ").encode("hex")

print "\n\n"+a.decode("hex")+"\n\n"

raw_input("Acabou o teste")


0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Eu disse boa porque me deste uma ideia, fui tentar descobrir a codificação da consola (como agora não estou em casa não sei qual é, depois digo), depois converto a string introduzida para unicode, e novamente para utf-8, para poder guardar no ficheiro.

É uma cena do género

raw_input('>>>').decode(cp'850').encode('utf-8')

Depois meto o código....

Edit:

A codificação de caracteres do ms-dos é cp850 - http://en.wikipedia.org/wiki/Code_page_850

Para imprimir acentos na consola do Windows deve de se usar esta codificação ou unicode, se o programa for aberto directamente no python deve de se usar utf-8. #Errado, não dá para meter acentos

A codificação dos raw_input é cp850 em ambos.

Nota: cp860 - http://en.wikipedia.org/wiki/Code_page_860 - (Português) também funciona, mas tem menos caracteres.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora