Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

padrao ANSI x UTF-8

Bom dia,

eu tenho o código abaixo que funciona para arquivos que estão no padrão ANSI

def carrega_arquivo():
    arquivo = open("versao2.txt", "r")
    conteudo = arquivo.read()
    print(conteudo)
    arquivo.close()


carrega_arquivo()

porém quando o mesmo arquivo .txt é salvo em padrão UTF-8 eu tenho esse erro,

C:\Users\GravinaD\PycharmProjects\Formulas\venv\Scripts\python.exe C:/Users/GravinaD/PycharmProjects/Formulas/readFiles.py Traceback (most recent call last): File "C:/Users/GravinaD/PycharmProjects/Formulas/readFiles.py", line 10, in carrega_arquivo() File "C:/Users/GravinaD/PycharmProjects/Formulas/readFiles.py", line 5, in carrega_arquivo conteudo = arquivo.read() File "C:\Users\GravinaD\AppData\Local\Programs\Python\Python38-32\lib\encodings\cp1252.py", line 23, in decode return codecs.charmap_decode(input,self.errors,decoding_table)[0] UnicodeDecodeError: 'charmap' codec can't decode byte 0x81 in position 182: character maps to

Process finished with exit code 1

O meu código não deveria funcionar para o padão UTF-8 também? Qual a diferença?

Obrigado, Diego

1 resposta
solução!

Oi Diego, como você está?

Para evitar esse erro, é necessário dizer explicitamente o tipo de codificação do arquivo, por exemplo:

arq = open(nome_do_arquivo, encoding="utf-8")

Por padrão, quando não especificamos o encoding, o Python irá pegar o enconding local do sistema e o seu provavelmente não é o uft8, por isso o erro é levantado. Tente especificar diretamente o tipo de codificação do arquivo e verifique se o erro irá persistir.

Quanto a diferença de um padrão e outro é que o UTF-8 pode representar uma gama de caracteres muito maior que o ANSI.

Qualquer dúvida estou por aqui, tá bom?

Abraços e bons estudos!