Ir para o conteúdo
fnds

Caracteres especiais + Consola do windows = Erro!

Mensagens Recomendadas

fnds    2
fnds

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?

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
fnds    2
fnds

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)

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
JoaoRodrigues    0
JoaoRodrigues

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

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
newbeen    0
newbeen

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")


Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
fnds    2
fnds

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.

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


×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade