Web-compatible encoding and decoding library
endec uses encoding_rs
(which powers Firefox) under the hood.
Requires Python 3.8+
$ pip install endec
Please refer to WHATWG Web Encoding Standard for available codecs.
import endec
utf8_bytes = endec.encode("こんにちは")
assert utf8_bytes == b"\xe3\x81\x93\xe3\x82\x93\xe3\x81\xab\xe3\x81\xa1\xe3\x81\xaf"
iso2022jp_bytes = endec.encode("㊤㊥㊦", "iso-2022-jp")
assert iso2022jp_bytes == b"\x1b$B-e-f-g\x1b(B"
"㊤㊥㊦".encode("iso-2022-jp") # Standard Library `encode`
# UnicodeEncodeError: 'iso2022_jp' codec can't encode character '\u32a4' in position 0: illegal multibyte sequence
import endec
utf8_str = endec.decode(b"\xe3\x81\x93\xe3\x82\x93\xe3\x81\xab\xe3\x81\xa1\xe3\x81\xaf")
assert utf8_str == "こんにちは"
iso2022jp_str = endec.decode(b"\x1b$B-e-f-g\x1b(B", "iso-2022-jp")
assert iso2022jp_str == "㊤㊥㊦"
b"\x1b$B-e-f-g\x1b(B".decode("iso-2022-jp") # Standard Library `decode`
# UnicodeDecodeError: 'iso2022_jp' codec can't decode bytes in position 3-4: illegal multibyte sequence
import endec
from endec.exceptions import EncodeError, DecodeError
try:
invalid_encode = endec.encode("漢字", "ascii")
except EncodeError as exc:
# endec.exceptions.EncodeError: encoding with 'windows-1252' codec failed
raise exc
try:
invalid_decode = endec.decode(b"\x42\xff\x42", "iso-2022-jp")
except DecodeError as exc:
# endec.exceptions.DecodeError: decoding with 'ISO-2022-JP' codec failed
raise exc
This project is licensed under the terms of the MIT license.