Code: Alles auswählen
#!/usr/bin/env python3
import codecs
import encodings
from functools import partial
from pathlib import Path
def is_text_encoding(name):
try:
codecs.lookup(name)
#
# Try encoding a string to filter out non text encodings.
#
"".encode(name)
except (LookupError, UnicodeError):
return False
else:
return True
def test_encoding(source_text, expected_result, encoding_name):
try:
return source_text.encode(encoding_name) == expected_result
except UnicodeEncodeError:
return False
def main():
encodings_path = Path(encodings.__file__).parent
candidates = (path.stem for path in encodings_path.glob("*.py"))
encoding_names = sorted(filter(is_text_encoding, candidates))
print(f"Checking {len(encoding_names)} encodings...")
print(list(filter(partial(test_encoding, "Ü", b"\xfc"), encoding_names)))
if __name__ == "__main__":
main()
Code: Alles auswählen
Checking 110 encodings...
['cp037', 'cp1140', 'cp500']