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