OT Python print a errory s unicode

Pavel Brychta pavel.brychta na duhasys.eu
Středa Říjen 13 10:06:29 CEST 2021


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>
>>
>>     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?
>>
>>         Díky,
>>         PH
>>
>>         _______________________________________________
>>         HW-list mailing list  -  sponsored bywww.HW.cz  <http://www.hw.cz>
>>         Hw-list na list.hw.cz  <mailto:Hw-list na list.hw.cz>
>>         http://list.hw.cz/mailman/listinfo/hw-list  <http://list.hw.cz/mailman/listinfo/hw-list>
>>
>>     _______________________________________________
>>     HW-list mailing list - sponsored by www.HW.cz
>>     Hw-list na list.hw.cz
>>     http://list.hw.cz/mailman/listinfo/hw-list
>>
>>
>> _______________________________________________
>> HW-list mailing list  -  sponsored bywww.HW.cz
>> Hw-list na list.hw.cz
>> http://list.hw.cz/mailman/listinfo/hw-list
>
>
>
> _______________________________________________
> HW-list mailing list  -  sponsored by www.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list


------------- další část ---------------
HTML příloha byla odstraněna...
URL: <http://list.hw.cz/pipermail/hw-list/attachments/20211013/781749b4/attachment.html>


Další informace o konferenci Hw-list