Iconvex Unicode

iconvex_unicode adds 17 pure-Elixir byte-stream codecs and two logical non-octet Unicode formats to Iconvex. The OTP application publishes the complete name set in one transaction.

The package includes:

{:ok, compressed} = Iconvex.convert("日本語", "UTF-8", "BOCU-1")
{:ok, "日本語"} = Iconvex.convert(compressed, "BOCU-1", "UTF-8")
{:ok, packed_nonets} = Iconvex.Unicode.UTF9.encode_packed([?A, 0x0391, 0x10330])
{:ok, [?A, 0x0391, 0x10330]} = Iconvex.Unicode.UTF9.decode_packed(packed_nonets)
{:ok, fsw} = Iconvex.Unicode.FormalSignWriting.encode([0x40001])
{:ok, "S10000"} = {:ok, fsw}

Bare UTF-9 and UTF-18 are not byte-registry names. Use UTF-9-16BE, UTF-9-16LE, UTF-18-24BE, or UTF-18-24LE with Iconvex.convert/4. Call the logical modules for native packed bitstrings.

Development

Use the local Core checkout in this monorepo:

ICONVEX_PATH=../iconvex mix test

The runtime implementation uses LGPL-2.1-or-later. NOTICE describes retained source records and Internet-Draft notices.

Complete codec catalog

The generator builds this table from the release inventories. Do not edit this section by hand. Codec names ignore ASCII letter case. You can use each alias to look up its codec. Aliases do not increase the canonical codec count.

17 canonical codecs · 33 aliases · 50 accepted names.

Registered codec names

Canonical codecAccepted aliasesStateful
BOCU-1BOCU1
csBOCU-1
Yes
CESU-8CESU8
csCESU-8
No
FSS-UTFUTF-2No
FSWFORMAL-SIGNWRITING-ASCII
FORMAL-SIGNWRITING-IN-ASCII
FSW-2012
FSW-ASCII
No
ICONVEX-UTF-16-SIGNATURE-LE-DEFAULTICONVEX_UTF_16_SIGNATURE_LE_DEFAULTYes
ICONVEX-UTF-32BE-SIGNATUREICONVEX_UTF_32BE_SIGNATUREYes
ICONVEX-UTF-32LE-SIGNATUREICONVEX_UTF_32LE_SIGNATUREYes
SCSUcsSCSUYes
UTF-1csISO10646UTF1
ISO-10646-UTF-1
ISO-IR-178
UTF1
No
UTF-18-24BEUTF-18-24-BE
UTF18-24BE
No
UTF-18-24LEUTF-18-24-LE
UTF18-24LE
No
UTF-5DRAFT-JSENG-UTF5-01
UTF5
No
UTF-6DRAFT-IETF-IDN-UTF6-00
UTF6
No
UTF-9-16BEUTF-9-16-BE
UTF9-16BE
No
UTF-9-16LEUTF-9-16-LE
UTF9-16LE
No
UTF-EBCDICUTFEBCDIC
UTF_EBCDIC
No
WTF-8WOBBLY-TRANSFORMATION-FORMAT-8
WTF8
No

Logical non-octet codecs

2 logical codecs · 0 aliases · 4 byte transports. These codecs keep their specified unit width. The byte transports provide explicit registry-compatible forms. They do not add logical codecs.

Logical codecAccepted aliasesUnit bitsByte transports
UTF-1818UTF-18-24BE
UTF-18-24LE
UTF-99UTF-9-16BE
UTF-9-16LE