Iconvex ICU

iconvex_icu provides the current ICU extension for Iconvex. It contains 212 native Elixir codecs and 191 package-owned mapping tables. Runtime conversion uses no ICU library, NIF, port, operating-system iconv, or external process.

This package owns current ICU 78.3 converter profiles and native implementations. The separate iconvex_icu_archive package owns 1,050 historical revision snapshots.

Package contents

FamilyCodecsNotes
ICU UCM single-byte135Exact SBCS revision names, aliases, precision flags, and canonical inverse choices
ICU multibyte30Complete table-driven MBCS/DBCS profiles, including IBM, EUC, Windows, CNS 11643, and JIS X 0212 mappings
ICU EBCDIC stateful10SI/SO mixed SBCS/DBCS converters with canonical shift framing
ICU S/390 swaplfnl16EBCDIC variants that exchange the LF and NL byte assignments
JIS7/JIS82ICU ISO-2022 Japanese implementation profiles
LMBCS12Groups 1, 2, 3, 4, 5, 6, 8, 11, 16, 17, 18, and 19
ICU Unicode variants6Versioned UTF-16 plus platform/opposite-endian UTF-16 and UTF-32 profiles
X11 Compound Text1ICU's compound-text converter behavior

The checked-in surface manifest defines all 212 canonical registrations. It also defines aliases, implementation modules, table IDs, and source artifacts.

Installation

def deps do
[
{:iconvex, "~> 0.1.1"},
{:iconvex_icu, "~> 0.1.0"}
]
end

The OTP application registers the entire package in one transaction. A failed name or table-provider claim rolls back the operation. Stopping the application removes its routes and providers.

Examples

All codecs use Iconvex.convert/4:

{:ok, encoded} =
Iconvex.convert("AあいB", "UTF-8", "ibm-930_P120-1999")
<<0xC1, 0x0E, 0x44, 0x81, 0x44, 0x82, 0x0F, 0xC2>> = encoded
{:ok, "AあいB"} =
Iconvex.convert(encoded, "ibm-930_P120-1999", "UTF-8")

ICU's S/390 newline surface keeps the LF/NL distinction explicit:

{:ok, <<0x15, 0x25>>} =
Iconvex.convert(<<0x0A::utf8, 0x85::utf8>>, "UTF-8",
"ibm-1047_P100-1995,swaplfnl"
)

LMBCS profiles are separate encodings because their optimization groups choose different canonical byte sequences:

{:ok, lmbcs} = Iconvex.convert("Lotus Ελληνικά", "UTF-8", "LMBCS-6")
{:ok, "Lotus Ελληνικά"} = Iconvex.convert(lmbcs, "LMBCS-6", "UTF-8")

The package preserves versioned and host-endian names exactly.

{:ok, bytes} = Iconvex.convert("A😀", "UTF-8", "UTF-16,version=2")
{:ok, "A😀"} = Iconvex.convert(bytes, "UTF-16,version=2", "UTF-8")

Provenance and verification

The mapping corpus uses ICU release 78.3 at Git revision 21d1eb0f306e1141c10931e914dfc038c06121da. Tests verify every source digest and reconstruct directional mappings from UCM files. They execute these cases:

The full Unicode scalar fixture covers LMBCS and Unicode variants. See BENCHMARKS.md for the executable ICU-oracle performance gates. All 24 LMBCS encode and decode paths remain below the 30x limit.

The package loads generated tables only when needed. It caches them in persistent_term. It shares Core's table and stateful engines instead of duplicating the conversion runtime.

Licensing

The original Iconvex source uses LGPL-2.1-or-later. The Unicode License v3 covers ICU/Unicode data and derived mapping tables. See LICENSE, LICENSE.UNICODE, and NOTICE.

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.

212 canonical codecs · 755 aliases · 967 accepted names.

Registered codec names

Canonical codecAccepted aliasesStateful
CNS-11643-1992No
ebcdic-xml-usNo
euc-jp-2007eucjis
ujis
X-EUC-JP
No
euc-tw-2014ibm-964_VPUANo
ibm-1006_P100-19951006
cp1006
ibm-1006
ibm-1006_VPUA
IBM1006
x-IBM1006
No
ibm-1025_P100-19951025
cp1025
ibm-1025
ibm-1025_STD
x-IBM1025
No
ibm-1026_P100-19951026
CP1026
csIBM1026
ibm-1026
ibm-1026_STD
IBM1026
No
ibm-1047_P100-19951047
cp1047
ibm-1047
ibm-1047_STD
IBM1047
No
ibm-1047_P100-1995,swaplfnlibm-1047-s390
IBM1047_LF
No
ibm-1051_P100-1995ibm-1051
ibm-1051_STD
x-roman8
No
ibm-1089_P100-19951089
8859_6
cp1089
ibm-1089_STD
windows-28596
x-ISO-8859-6S
No
ibm-1097_P100-19951097
cp1097
ibm-1097
ibm-1097_VPUA
x-IBM1097
No
ibm-1098_P100-19951098
cp1098
ibm-1098
ibm-1098_VSUB_VPUA
IBM1098
x-IBM1098
No
ibm-1112_P100-19951112
cp1112
ibm-1112
ibm-1112_STD
x-IBM1112
No
ibm-1122_P100-19991122
cp1122
ibm-1122
ibm-1122_STD
x-IBM1122
No
ibm-1123_P100-19951123
cp1123
ibm-1123
ibm-1123_STD
x-IBM1123
No
ibm-1124_P100-19961124
cp1124
ibm-1124
ibm-1124_STD
x-IBM1124
No
ibm-1125_P100-1997cp1125
ibm-1125
ibm-1125_VSUB
No
ibm-1129_P100-1997ibm-1129
ibm-1129_STD
No
ibm-1130_P100-1997ibm-1130
ibm-1130_STD
No
ibm-1131_P100-1997ibm-1131_VSUBNo
ibm-1132_P100-1998ibm-1132
ibm-1132_STD
No
ibm-1133_P100-1997ibm-1133
ibm-1133_STD
No
ibm-1137_P100-1999ibm-1137
ibm-1137_STD
No
ibm-1140_P100-1997CCSID01140
CP01140
cp1140
ebcdic-us-37+euro
ibm-1140
ibm-1140_STD
IBM01140
No
ibm-1140_P100-1997,swaplfnlibm-1140-s390No
ibm-1141_P100-1997CCSID01141
CP01141
cp1141
ebcdic-de-273+euro
ibm-1141
ibm-1141_STD
IBM01141
No
ibm-1141_P100-1997,swaplfnlibm-1141-s390
IBM1141_LF
No
ibm-1142_P100-1997CCSID01142
CP01142
cp1142
ebcdic-dk-277+euro
ebcdic-no-277+euro
ibm-1142
ibm-1142_STD
IBM01142
No
ibm-1142_P100-1997,swaplfnlibm-1142-s390No
ibm-1143_P100-1997CCSID01143
CP01143
cp1143
ebcdic-fi-278+euro
ebcdic-se-278+euro
ibm-1143
ibm-1143_STD
IBM01143
No
ibm-1143_P100-1997,swaplfnlibm-1143-s390No
ibm-1144_P100-1997CCSID01144
CP01144
cp1144
ebcdic-it-280+euro
ibm-1144
ibm-1144_STD
IBM01144
No
ibm-1144_P100-1997,swaplfnlibm-1144-s390No
ibm-1145_P100-1997CCSID01145
CP01145
cp1145
ebcdic-es-284+euro
ibm-1145
ibm-1145_STD
IBM01145
No
ibm-1145_P100-1997,swaplfnlibm-1145-s390No
ibm-1146_P100-1997CCSID01146
CP01146
cp1146
ebcdic-gb-285+euro
ibm-1146
ibm-1146_STD
IBM01146
No
ibm-1146_P100-1997,swaplfnlibm-1146-s390No
ibm-1147_P100-1997CCSID01147
CP01147
cp1147
ebcdic-fr-297+euro
ibm-1147
ibm-1147_STD
IBM01147
No
ibm-1147_P100-1997,swaplfnlibm-1147-s390No
ibm-1148_P100-1997CCSID01148
CP01148
cp1148
ebcdic-international-500+euro
ibm-1148
ibm-1148_STD
IBM01148
No
ibm-1148_P100-1997,swaplfnlibm-1148-s390No
ibm-1149_P100-1997CCSID01149
CP01149
cp1149
ebcdic-is-871+euro
ibm-1149
ibm-1149_STD
IBM01149
No
ibm-1149_P100-1997,swaplfnlibm-1149-s390No
ibm-1153_P100-1999ibm-1153
ibm-1153_STD
IBM1153
x-IBM1153
No
ibm-1153_P100-1999,swaplfnlibm-1153-s390No
ibm-1154_P100-1999ibm-1154
ibm-1154_STD
No
ibm-1155_P100-1999ibm-1155
ibm-1155_STD
No
ibm-1156_P100-1999ibm-1156
ibm-1156_STD
No
ibm-1157_P100-1999ibm-1157
ibm-1157_STD
No
ibm-1158_P100-1999ibm-1158
ibm-1158_STD
No
ibm-1160_P100-1999ibm-1160
ibm-1160_STD
No
ibm-1162_P100-1999ibm-1162
ibm-1162_STD
No
ibm-1164_P100-1999ibm-1164
ibm-1164_STD
No
ibm-1168_P100-2002ibm-1168
ibm-1168_STD
windows-21866
No
ibm-1250_P100-1995ibm-1250_STDNo
ibm-1251_P100-1995ibm-1251_STDNo
ibm-1252_P100-2000ibm-1252_STDNo
ibm-1253_P100-1995ibm-1253_STDNo
ibm-1254_P100-1995ibm-1254_STDNo
ibm-1255_P100-1995ibm-1255_STDNo
ibm-1256_P110-1997ibm-1256_STDNo
ibm-1257_P100-1995ibm-1257_STDNo
ibm-1258_P100-1997ibm-1258
ibm-1258_STD
No
ibm-12712_P100-1998ebcdic-he
ibm-12712
ibm-12712_STD
No
ibm-12712_P100-1998,swaplfnlibm-12712-s390No
ibm-1276_P100-1995ibm-1276
ibm-1276_VASCII
No
ibm-1363_P110-1997ibm-1363
ibm-1363_VASCII_VSUB_VPUA
x-IBM1363
No
ibm-1363_P11B-1998cp1363
ibm-1363_VSUB_VPUA
ksc
windows-949
x-IBM1363C
No
ibm-1364_P110-2007ibm-1364
ibm-1364_VPUA
x-IBM1364
Yes
ibm-1371_P100-1999ibm-1371
ibm-1371_VPUA
x-IBM1371
Yes
ibm-1373_P100-2002ibm-1373
ibm-1373_VSUB_VPUA
windows-950
No
ibm-1375_P100-2008big5hk
HKSCS-BIG5
ibm-1375
ibm-1375_VPUA
No
ibm-1383_P110-19991383
cp1383
ibm-1383_VPUA
No
ibm-1386_P100-2001cp1386
ibm-1386_VSUB_VPUA
No
ibm-1388_P100-2024ibm-1388
ibm-1388_VPUA
ibm-9580
x-IBM1388
Yes
ibm-1390_P110-2003ibm-1390
ibm-1390_VPUA
x-IBM1390
Yes
ibm-1399_P110-2003ibm-1399
ibm-1399_VPUA
x-IBM1399
Yes
ibm-16684_P110-2003ibm-16684
ibm-16684_VPUA
ibm-20780
No
ibm-16804_X110-1999ebcdic-ar
ibm-16804
ibm-16804_STD
No
ibm-16804_X110-1999,swaplfnlibm-16804-s390No
ibm-273_P100-1995273
CP273
csIBM273
ebcdic-de
ibm-273
ibm-273_STD
IBM273
No
ibm-277_P100-1995277
cp277
csIBM277
EBCDIC-CP-DK
EBCDIC-CP-NO
ebcdic-dk
ibm-277
ibm-277_STD
IBM277
No
ibm-278_P100-1995278
cp278
csIBM278
ebcdic-cp-fi
ebcdic-cp-se
ebcdic-sv
ibm-278
ibm-278_STD
IBM278
No
ibm-280_P100-1995280
CP280
csIBM280
ebcdic-cp-it
ibm-280
ibm-280_STD
IBM280
No
ibm-284_P100-1995284
CP284
cpibm284
csIBM284
ebcdic-cp-es
ibm-284
ibm-284_STD
IBM284
No
ibm-285_P100-1995285
CP285
cpibm285
csIBM285
ebcdic-cp-gb
ebcdic-gb
ibm-285
ibm-285_STD
IBM285
No
ibm-290_P100-1995csIBM290
ibm-290
ibm-290_STD
No
ibm-297_P100-1995297
cp297
cpibm297
csIBM297
ebcdic-cp-fr
ibm-297
ibm-297_STD
IBM297
No
ibm-33722_P120-199933722
cp33722
ibm-33722_VASCII_VPUA
ibm-5050
x-IBM33722
x-IBM33722A
x-IBM33722C
No
ibm-33722_P12A_P12A-2004_U2ibm-33722_VPUANo
ibm-33722_P12A_P12A-2009_U2No
ibm-37_P100-1995037
cp037
cp37
cpibm37
csIBM037
ebcdic-cp-ca
ebcdic-cp-nl
ebcdic-cp-us
ebcdic-cp-wt
ibm-037
ibm-37
ibm-37_STD
IBM037
No
ibm-37_P100-1995,swaplfnlibm-37-s390
ibm037-s390
No
ibm-420_X120-1999420
csIBM420
ibm-420
ibm-420_STD
No
ibm-424_P100-1995424
cp424
csIBM424
ebcdic-cp-he
ibm-424
ibm-424_STD
IBM424
No
ibm-437_P100-1995437
cp437
csPC8CodePage437
ibm-437
ibm-437_VSUB
IBM437
windows-437
No
ibm-4517_P100-2005ibm-4517
ibm-4517_VPUA
No
ibm-4899_P100-1998ibm-4899
ibm-4899_STD
No
ibm-4909_P100-1999ibm-4909
ibm-4909_STD
No
ibm-4971_P100-1999ibm-4971
ibm-4971_STD
No
ibm-500_P100-1995500
CP500
csIBM500
ebcdic-cp-be
ebcdic-cp-ch
ibm-500
ibm-500_STD
IBM500
No
ibm-5012_P100-19998859_8
hebrew8
ibm-5012
ibm-5012_STD
windows-28598
No
ibm-5123_P100-1999ibm-5123
ibm-5123_STD
No
ibm-5346_P100-1998ibm-5346
ibm-5346_STD
No
ibm-5347_P100-1998ANSI1251
ibm-5347
ibm-5347_STD
No
ibm-5348_P100-1997ibm-5348
ibm-5348_STD
No
ibm-5349_P100-1998ibm-5349
ibm-5349_STD
No
ibm-5350_P100-1998ibm-5350
ibm-5350_STD
No
ibm-5351_P100-1998ibm-5351
ibm-5351_STD
No
ibm-5352_P100-1998ibm-5352
ibm-5352_STD
No
ibm-5353_P100-1998ibm-5353
ibm-5353_STD
No
ibm-5354_P100-1998ibm-5354
ibm-5354_STD
No
ibm-5471_P100-2006big5-hkscs:unicode3.0
hkbig5
ibm-5471
ibm-5471_VPUA
MS950_HKSCS
x-MS950-HKSCS
No
ibm-5478_P100-1995gb2312-1980
GB2312.1980-0
ibm-5478
ibm-5478_STD
No
ibm-720_P100-1997DOS-720
ibm-720
ibm-720_VSUB
windows-720
x-IBM720
No
ibm-737_P100-1997737
cp737
ibm-737
ibm-737_VSUB
IBM737
windows-737
x-IBM737
No
ibm-775_P100-1996775
cp775
csPC775Baltic
ibm-775
ibm-775_VSUB
IBM775
windows-775
No
ibm-803_P100-1999cp803
ibm-803
ibm-803_STD
No
ibm-813_P100-1995813
cp813
ibm-813_STD
No
ibm-838_P100-1995838
cp838
csIBMThai
ibm-838
ibm-838_STD
ibm-9030
IBM-Thai
IBM838
No
ibm-8482_P100-1999ibm-8482
ibm-8482_STD
No
ibm-850_P100-1995ibm-850_VSUB
windows-850
No
ibm-851_P100-1995csPC851
ibm-851
ibm-851_VSUB
No
ibm-852_P100-1995852
cp852
csPCp852
ibm-852
ibm-852_VSUB
IBM852
windows-852
No
ibm-855_P100-1995855
cp855
csIBM855
csPCp855
ibm-855
ibm-855_VSUB
IBM855
windows-855
No
ibm-856_P100-1995856
cp856
ibm-856
ibm-856_VSUB
IBM856
x-IBM856
No
ibm-857_P100-1995857
cp857
csIBM857
ibm-857
ibm-857_VSUB
IBM857
windows-857
No
ibm-858_P100-1997CCSID00858
CP00858
cp858
ibm-858
ibm-858_VSUB
IBM00858
PC-Multilingual-850+euro
windows-858
No
ibm-860_P100-1995860
cp860
csIBM860
ibm-860
ibm-860_VSUB
IBM860
No
ibm-861_P100-1995861
cp-is
cp861
csIBM861
ibm-861
ibm-861_VSUB
IBM861
windows-861
No
ibm-862_P100-1995DOS-862
ibm-862_VSUB
windows-862
No
ibm-863_P100-1995863
cp863
csIBM863
ibm-863
ibm-863_VSUB
IBM863
No
ibm-864_X110-1999cp864
csIBM864
ibm-864
ibm-864_VSUB
IBM864
No
ibm-865_P100-1995865
cp865
csIBM865
ibm-865
ibm-865_VSUB
IBM865
No
ibm-866_P100-1995ibm-866_VSUB
windows-866
No
ibm-867_P100-1998ibm-867
ibm-867_VSUB
x-IBM867
No
ibm-868_P100-1995868
csIBM868
ibm-868
ibm-868_VSUB_VPUA
No
ibm-869_P100-1995869
cp-gr
cp869
csIBM869
ibm-869
ibm-869_VSUB
IBM869
windows-869
No
ibm-870_P100-1995CP870
csIBM870
ebcdic-cp-roece
ebcdic-cp-yu
ibm-870
ibm-870_STD
IBM870
No
ibm-871_P100-1995871
CP871
csIBM871
ebcdic-cp-is
ebcdic-is
ibm-871
ibm-871_STD
IBM871
No
ibm-874_P100-1995eucTH
ibm-874_VSUB
ibm-9066
x-IBM874
No
ibm-875_P100-1995875
cp875
ibm-875
ibm-875_STD
IBM875
x-IBM875
No
ibm-878_P100-1996cp878
ibm-878_STD
koi8
windows-20866
No
ibm-9005_X110-20078859_7
ibm-9005
ibm-9005_STD
sun_eu_greek
windows-28597
No
ibm-901_P100-1999ibm-901
ibm-901_STD
No
ibm-902_P100-1999ibm-902
ibm-902_STD
No
ibm-9067_X100-2005ibm-9067
ibm-9067_STD
No
ibm-912_P100-19958859_2
912
cp912
ibm-912_STD
windows-28592
No
ibm-913_P100-20008859_3
913
cp913
ibm-913_STD
windows-28593
No
ibm-914_P100-19958859_4
914
cp914
ibm-914_STD
windows-28594
No
ibm-915_P100-19958859_5
915
cp915
ibm-915_STD
windows-28595
No
ibm-916_P100-1995916
cp916
ibm-916_STD
No
ibm-918_P100-1995csIBM918
ibm-918
ibm-918_VPUA
No
ibm-920_P100-19958859_9
920
cp920
ECMA-128
ibm-920_STD
turkish
windows-28599
No
ibm-921_P100-19958859_13
921
cp921
ibm-921_STD
windows-28603
x-IBM921
No
ibm-922_P100-1999922
cp922
ibm-922
ibm-922_STD
IBM922
x-IBM922
No
ibm-923_P100-19988859_15
923
cp923
csisolatin0
csisolatin9
ibm-923_STD
iso8859_15_fdis
l9
latin0
windows-28605
No
ibm-924_P100-1998,swaplfnlibm-924-s390
IBM924_LF
No
ibm-930_P120-1999930
CP50930
cp930
ibm-5026
ibm-930
ibm-930_VPUA
IBM930
windows-50930
x-IBM930
x-IBM930A
Yes
ibm-933_P110-1995933
CP50933
cp933
ibm-933
ibm-933_VPUA
windows-50933
x-IBM933
Yes
ibm-935_P110-1999935
CP50935
cp935
ibm-935
ibm-935_VPUA
windows-50935
x-IBM935
Yes
ibm-937_P110-1999937
CP50937
cp937
ibm-937
ibm-937_VPUA
windows-50937
x-IBM937
Yes
ibm-939_P120-1999939
CP50939
cp939
ibm-5035
ibm-931
ibm-939
ibm-939_VPUA
IBM939
windows-50939
x-IBM939
x-IBM939A
Yes
ibm-942_P12A-1999ibm-932_VSUB_VPUA
ibm-942
ibm-942_VSUB_VPUA
shift_jis78
sjis78
x-IBM942
x-IBM942C
No
ibm-943_P130-1999943
cp943
ibm-943
ibm-943_VASCII_VSUB_VPUA
x-IBM943
No
ibm-943_P15A-2003cp943c
csWindows31J
IBM-943C
ibm-943_VSUB_VPUA
ms932
windows-31j
windows-932
x-JISAutoDetect
x-ms-cp932
x-MS932_0213
x-sjis
No
ibm-9447_P100-2002ibm-9447
ibm-9447_STD
No
ibm-9448_X100-2005ibm-9448
ibm-9448_STD
x-windows-1256S
No
ibm-9449_P100-2002ibm-9449
ibm-9449_STD
No
ibm-949_P110-1999949
ibm-949_VASCII_VSUB_VPUA
x-IBM949
No
ibm-949_P11A-1999cp949c
IBM-949C
ibm-949_VSUB_VPUA
x-IBM949C
No
ibm-950_P110-1999950
ibm-950_VSUB_VPUA
x-IBM950
No
ibm-954_P101-2007ibm-954_VPUA
x-IBM954
x-IBM954C
No
ibm-964_P110-1999964
cp964
x-IBM964
No
ibm-970_P110_P110-2006_U2970
cp970
ibm-970_VPUA
windows-51949
x-IBM970
No
ibm-971_P100-1995ibm-971
ibm-971_VPUA
x-IBM971
No
ICU-MULTIBYTE:ISO-IR-165No
iso-8859_10-1998No
iso-8859_11-2001x-iso-8859-11No
iso-8859_14-1998No
JIS7ISO_2022,locale=ja,version=3No
JIS8ISO_2022,locale=ja,version=4No
JISX-212No
LMBCS-1ibm-65025
lmbcs
No
LMBCS-11No
LMBCS-16No
LMBCS-17No
LMBCS-18No
LMBCS-19No
LMBCS-2No
LMBCS-3No
LMBCS-4No
LMBCS-5No
LMBCS-6No
LMBCS-8No
macos-0_2-10.2windows-10000
x-macroman
No
macos-29-10.2macce
windows-10029
x-mac-ce
x-mac-centraleurroman
x-MacCentralEurope
No
macos-35-10.2mactr
windows-10081
x-mac-turkish
x-MacTurkish
No
macos-6_2-10.4macgr
windows-10006
x-mac-greek
x-MacGreek
No
macos-7_3-10.2maccy
windows-10007
x-mac-cyrillic
x-MacCyrillic
x-MacUkraine
No
UTF-16,version=1No
UTF-16,version=2No
UTF16_OppositeEndianNo
UTF16_PlatformEndianNo
UTF32_OppositeEndianNo
UTF32_PlatformEndianNo
windows-874-2000MS874
x-windows-874
No
windows-936-2000No
windows-949-2000ms949
x-KSC5601
No
windows-950-2000ms950
x-big5
x-windows-950
No
x11-compound-textCOMPOUND_TEXT
x-compound-text
No