OT Python print a errory s unicode
Pavel Hudeček
edizon na seznam.cz
Středa Říjen 13 11:05:31 CEST 2021
Díky, to vypadá dobře.
PH
---------- Původní e-mail ----------
Od: Pavel Brychta <pavel.brychta na duhasys.eu>
"
Tak jeste jeden napad - zkuste print(str.decode('utf8', 'replace')) - melo
by to nahradit kazdy vadny znak znakem uFFFD (otaznik v kosoctverci) - da se
predefinovat v replace error handleru.
Dne 13. 10. 21 v 10:00 Pavel Brychta napsal(a):
"
Aha, takze chyba je uz v obsahu toho retezce a ne v nejake konverzi predtim.
V tom pripade je treba se zamerit na to, jak se tam ty nesmysly dostaly.
Standardni metody dokazou ten retezec prevest maximalne s ignorovanim chyb
(treba str.encode('ascii', 'ignore') ), coz ale znamena, ze invalidni byty
vystriha pryc. Dalsi moznost pak je nepouzit konverzi na bytearray, ale
proiterovat to rucne (treba ord(str[i]), nebo primo str[i], popr '%x' % str
[i])
P.B.
Dne 12. 10. 21 v 13:49 Pavel Hudeček napsal(a):
" Omlouvám se, ale nějak mi není jasné, jak to může pomoct. Udělám nějakej
konvert ze stringu do bytearray a ten umře úplně stejným způsobem. Nebo se
to dá konvertit nějak blbuvzdorně?
PH
---------- Původní e-mail ----------
Od: Pavel Brychta <pavel.brychta na duhasys.eu>
(mailto:pavel.brychta na duhasys.eu)
"
DD,
Python 2.X má řetězce jako pole bytů, Python 3.x má implicintí řetězce v
Unicode. Neuvedl jste, kterou verzi Pythonu používáte, ale předpokládám, že
>3, takže se zkuste odívat na Pythoní bytearray ( https://docs.python.org/
release/3.1.3/library/functions.html#bytearray
(https://docs.python.org/release/3.1.3/library/functions.html#bytearray) ),
který potom dumpnete ven.
P.B.
Dne 12. 10. 21 v 12:20 Pavel Hudeček napsal(a):
" Dobrý den všem,
mějme string vygenerovaný knihovnou, který občas může obsahovat divné znaky.
A já bych ho chtěl zobrazit bez záruky správnosti enkódování. Prostě aby
bylo vidět co tam asi tak je.
Když udělám for a print(str) zobrazí se třeba 10 ze 13 stringů a pak
nastane:
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 5:
invalid start byte
Je nějaký způsob, jak ho zobrazit bez errorů i za cenu, že to nebude zcela
správně?
Poznámka: Na Win10 to funguje bez errorů, ale ne Linuxu nastává tenhle
error. Ale je možné, že rozdíl win/lin je na straně vzniku toho stringu.
Je teda nějakej způsob, jak string zcela hloupě zobrazit, asi jako když se v
roce 1995 zmáčklo F3 ve Volkov Commanderu?
""
"""
------------- další část ---------------
HTML příloha byla odstraněna...
URL: <http://list.hw.cz/pipermail/hw-list/attachments/20211013/b156a3d6/attachment.html>
Další informace o konferenci Hw-list