Il modulo codecs definisce un insieme di classi base che definiscono l'interfaccia, e che possono anche venire usate per scrivere rapidamente i propri codecs da utilizzare con Python.
Ogni codec deve definire quattro interfacce perché sia usabile come codec in Python: stateless encoder (NdT: codificatore senza stato), stateless decoder (NdT: decodificatore senza stato), stream reader (NdT: lettore di flusso) e stream writer (NdT: scrittore di flusso). Gli stream reader e writer di solito riutilizzano gli stateless encoder/decoder per implementare i protocolli file.
La classe Codec definisce l'interfaccia per gli encoders/decoders stateless.
Per semplificare e standardizzare la gestione degli errori, i metodi encode() e decode() possono implementare differenti schemi di gestione dell'errore, fornendo l'argomento stringa errors. I seguenti valori stringa vengono definiti ed implementati da tutti i codec standard di Python:
Valore | Significato |
---|---|
'strict' |
Solleva un'eccezione UnicodeError (o una classe derivata); questo è il comportamento predefinito. |
'ignore' |
Ignora il carattere e continua con il successivo. |
'replace' |
Sostituisce con un opportuno carattere di rimpiazzo. Python userà il CARATTERE SOSTITUTIVO U+FFFD ufficiale per i codec Unicode built-in durante la codifica, e '?' per la decodifica. |
'xmlcharrefreplace' |
Sostituisce con l'appropriato riferimento a carattere XML (solo per la codifica). |
'backslashreplace' |
Sostituisce con una sequenza di escape protetto (solo per la codifica). |
L'insieme dei valori ammessi può venire esteso tramite register_error.