GNU/Linux >> Znalost Linux >  >> Linux

UnicodeDecodeError:kodek 'utf8' nemůže dekódovat bajt 0x9c

http://docs.python.org/howto/unicode.html#the-unicode-type

str = unicode(str, errors='replace')

nebo

str = unicode(str, errors='ignore')

Poznámka: Tímto odstraníte (ignorujete) příslušné znaky a vrátíte řetězec bez nich.

Pro mě je to ideální případ, protože jej používám jako ochranu před vstupem bez ASCII, který moje aplikace nepovoluje.

Alternativně: Použijte metodu open z codecs modul ke čtení v souboru:

import codecs
with codecs.open(file_name, 'r', encoding='utf-8',
                 errors='ignore') as fdata:

Změna enginu z C na Python mi pomohla.

Motor je C:

pd.read_csv(gdp_path, sep='\t', engine='c')

Kodek „utf-8“ nemůže dekódovat bajt 0x92 na pozici 18:neplatný počáteční bajt

Engine je Python:

pd.read_csv(gdp_path, sep='\t', engine='python')

Žádné chyby.


Tento typ problému se mi objevuje nyní, když jsem přešel na Python 3. Netušil jsem, že Python 2 jednoduše válcuje nějaké problémy s kódováním souborů.

Našel jsem toto pěkné vysvětlení rozdílů a jak najít řešení poté, co pro mě nic z výše uvedeného nefungovalo.

http://python-notes.curiousefficiency.org/en/latest/python3/text_file_processing.html

Stručně řečeno, aby se Python 3 choval co nejpodobněji jako Python 2, použijte:

with open(filename, encoding="latin-1") as datafile:
    # work on datafile here

Nicméně, přečtěte si článek, neexistuje žádné univerzální řešení.


Linux
  1. Jak mohu ovládat klávesnici a myš pomocí Pythonu?

  2. Dokáže python zjistit, pod kterým OS běží?

  3. Jak mohu nastavit 'backend' v matplotlib v Pythonu?

  1. UnicodeDecodeError:kodek 'utf8' nemůže dekódovat bajt 0x9c

  2. Můžeme použít C kód v Pythonu?

  3. Jak mohu použít výstražný dialog s Pythonem v linuxu?

  1. Při instalaci Watchmana nelze najít soubor Python.h

  2. Jaké programovací jazyky mohu ve výchozím nastavení předpokládat na náhodném serveru Linux?

  3. Jak mohu získat binární soubor ze souboru .py