Skip to main content

Unlimited UTF-8!

Project description

UTF-8000

Unlimited UTF-8!

ASCII ⊆ UTF-8 ⊆ UTF-8000

  • UTF-8000 is the correct way to expand UTF-8 indefinitely.
  • This repository contains a Python implementation of UTF-8000.
  • See UTF-8000-Website for the full writeup.
  • UTF-8000 is in no way endorsed by or representative of the Unicode Consortium. This is a standalone project.

Installing

Available on PyPI as UTF-8000

Recommended install using pipx:

$ pipx install UTF-8000

provides

utf-8000(1)

with subcommands

utf-8000 info
utf-8000 encode
utf-8000 decode

TLDR Examples

Using utf-8000 info

utf-8000-info-example.png 11111111 10111111 10110011 10011110 10101011 10011011 10111011 10101111 ...

Color key:

  • Bright Cyan: self-synchronization prefix 0 or 11 or 10
  • Bright Magenta: start bits 111...110
  • Bright Green: mandatory content bits
  • Green: content bits

Observe that the first byte has a self-synchronization prefix of 11 and is otherwise completely filled with 1s from the start bits. The start bits continue on into the continuation bytes which have a self-synchronization prefix of 10. The second byte is also completely filled with start bits. The third byte contains the end of the start bits, that is the two 1s and the terminating 0. The five mandatory content bits are in bright green, and the rest of the content is in green. Notice that at least one of the 'mandatory content bits' is a 1 to avoid an overlong encoding.

Using utf-8000 encode

$ echo 'U+DEADBEEFBADF00D' | utf-8000 encode | hexdump -C
00000000  ff bc b7 aa b6 be bb bb  ab 9f 80 8d              |............|
0000000c

Using utf-8000 decode

Using the bytes from the encode example above

$ echo -ne '\xff\xbc\xb7\xaa\xb6\xbe\xbb\xbb\xab\x9f\x80\x8d' | utf-8000 decode
U+DEADBEEFBADF00D

Or another example

$ echo 'שלום' | utf-8000 decode
U+05E9
U+05DC
U+05D5
U+05DD
U+000A

Package Contents

  • encode.py
    • encode(x: int) -> bytes: Encode an unsigned integer in UTF-8000 and return the bytes.
  • decode.py
    • UTF8000IncrementalDecoder: A 'fancy' incremental decoder class that can be fed bytes, and can be iterated over, yielding UTF8000Ints when full code units have been supplied and decoded.
  • UTF8000Int.py
    • A wrapper around UTF8000Bytes that form a code unit.
  • UTF8000Byte.py
    • UTF8000Byte: a 'fancy' byte wrapper around UTF-8000 bytes that is useful for education and inspection.
    • Various constants and utility functions.

See Also

The main UTF-8000 specification, including how to derive it, history, statistics, trivia, rejected alternatives etc is located at UTF-8000-Website, hosted at utf-8000.jb2170.com.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

utf_8000-3.0.0.tar.gz (26.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

utf_8000-3.0.0-py3-none-any.whl (27.6 kB view details)

Uploaded Python 3

File details

Details for the file utf_8000-3.0.0.tar.gz.

File metadata

  • Download URL: utf_8000-3.0.0.tar.gz
  • Upload date:
  • Size: 26.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.6

File hashes

Hashes for utf_8000-3.0.0.tar.gz
Algorithm Hash digest
SHA256 7cc6de1a8a170a111f267bfc8a3d5f6ffea42d9f02d28bd0470f04b12a1f3e97
MD5 ff0cec849620e3c3664645f6e7db1914
BLAKE2b-256 2bcb103e20dceb8f2d456f6d4313fbd6031cfafe07c6eb9b5ee9bdf8716a9af1

See more details on using hashes here.

File details

Details for the file utf_8000-3.0.0-py3-none-any.whl.

File metadata

  • Download URL: utf_8000-3.0.0-py3-none-any.whl
  • Upload date:
  • Size: 27.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.6

File hashes

Hashes for utf_8000-3.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 9fb6437eeb64c9d3c0e6aa2ae8f7d4a6d2548f99f9f5351cd83f25e21f648979
MD5 fcbbbbad2f8b35fb0d66f935f2f17c4a
BLAKE2b-256 d19dacd438be3312b419092a2fbc0d67802344c2423b66d94179dd4816a27d87

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page