# ******************************************************************************
# *
# *   Copyright (C) 1995-2007, International Business Machines
# *   Corporation and others.  All Rights Reserved.
# *
# ******************************************************************************

# If this converter alias table looks very confusing, a much easier to
# understand view can be found at this demo:
# http://demo.icu-project.org/icu-bin/convexp

# IMPORTANT NOTE
#
# This file is not read directly by ICU. If you change it, you need to
# run gencnval, and eventually run pkgdata to update the representation that
# ICU uses for aliases. The gencnval tool will normally compile this file into
# cnvalias.icu. The gencnval -v verbose option will help you when you edit
# this file.

# Please be friendly to the rest of us that edit this table by
# keeping this table free of tabs.

# This is an alias file used by the character set converter.
# A lot of converter information can be found in unicode/ucnv.h, but here
# is more information about this file.
#
# Here is the file format using BNF-like syntax:
#
# converterTable ::= tags { converterLine* }
# converterLine ::= converterName [ tags ] { taggedAlias* }'\n'
# taggedAlias ::= alias [ tags ]
# tags ::= '{' { tag+ } '}'
# tag ::= standard['*']
# converterName ::= [0-9a-zA-Z:_'-']+
# alias ::= converterName
#
# Except for the converter name, aliases are case insensitive.
# Names are separated by whitespace.
# Line continuation and comment sytax are similar to the GNU make syntax.
# Any lines beginning with whitespace (e.g. U+0020 SPACE or U+0009 HORIZONTAL
# TABULATION) are presumed to be a continuation of the previous line.
# The # symbol starts a comment and the comment continues till the end of
# the line.
#
# The converter
#
# All names can be tagged by including a space-separated list of tags in
# curly braces, as in ISO_8859-1:1987{IANA*} iso-8859-1 { MIME* } or
# some-charset{MIME* IANA*}. The order of tags does not matter, and
# whitespace is allowed between the tagged name and the tags list.
#
# The tags can be used to get standard names using ucnv_getStandardName().
#
# The complete list of recognized tags used in this file is defined in
# the affinity list near the beginning of the file.
#
# The * after the standard tag denotes that the previous alias is the
# preferred (default) charset name for that standard. There can only
# be one of these default charset names per converter.



# The world is getting more complicated...
# Supporting XML parsers, HTML, MIME, and similar applications
# that mark encodings with a charset name can be difficult.
# Many of these applications and operating systems will update
# their codepages over time.

# It means that a new codepage, one that differs from an
# old one by changing a code point, e.g., to the Euro sign,
# must not get an old alias, because it would mean that
# old files with this alias would be interpreted differently.

# If an codepage gets updated by assigning characters to previously
# unassigned code points, then a new name is not necessary.
# Also, some codepages map unassigned codepage byte values
# to the same numbers in Unicode for roundtripping. It may be
# industry practice to keep the encoding name in such a case, too
# (example: Windows codepages).

# The aliases listed in the list of character sets
# that is maintained by the IANA (http://www.iana.org/) must
# not be changed to mean encodings different from what this
# list shows. Currently, the IANA list is at
# http://www.iana.org/assignments/character-sets
# It should also be mentioned that the exact mapping table used for each
# IANA names usually isn't specified. This means that some other applications
# and operating systems are left to interpret the exact mappings for the
# underspecified aliases. For instance, Shift-JIS on a Solaris platform
# may be different from Shift-JIS on a Windows platform. This is why
# some of the aliases can be tagged to differentiate different mapping
# tables with the same alias. If an alias is given to more than one converter,
# it is considered to be an ambiguous alias, and the affinity list will
# choose the converter to use when a standard isn't specified with the alias.

# Name matching is case-insensitive. Also, dashes '-', underscores '_'
# and spaces ' ' are ignored in names (thus cs-iso_latin-1, csisolatin1
# and "cs iso latin 1" are the same).
# However, the names in the left column are directly file names
# or names of algorithmic converters, and their case must not
# be changed - or else code and/or file names must also be changed.
# For example, the converter ibm-921 is expected to be the file ibm-921.cnv.



# The immediately following list is the affinity list of supported standard tags.
# When multiple converters have the same alias under different standards,
# the standard nearest to the top of this list with that alias will
# be the first converter that will be opened. The ordering of the aliases
# after this affinity list does not affect the preferred alias, but it may
# affect the order of the returned list of aliases for a given converter.
#
# The general ordering is from specific and frequently used to more general
# or rarely used at the bottom.
{   UTR22           # Name format specified by http://www.unicode.org/unicode/reports/tr22/
    # ICU             # Can also use ICU_FEATURE
    IBM             # The IBM CCSID number is specified by ibm-*
    WINDOWS         # The Microsoft code page identifier number is specified by windows-*. The rest are recognized IE names.
    JAVA            # Source: Sun JDK. Alias name case is ignored, but dashes are not ignored.
    # GLIBC
    # AIX
    # DB2
    # SOLARIS
    # APPLE
    # HPUX
    IANA            # Source: http://www.iana.org/assignments/character-sets
    MIME            # Source: http://www.iana.org/assignments/character-sets
    # MSIE            # MSIE is Internet Explorer, which can be different from Windows (From the IMultiLanguage COM interface)
    # ZOS_USS         # z/OS (os/390) Unix System Services (USS), which has NL<->LF swapping. They have the same format as the IBM tag.
    }



# Fully algorithmic converters

UTF-8 { IANA* MIME* JAVA* WINDOWS }
                                ibm-1208 { IBM* } # UTF-8 with IBM PUA
                                ibm-1209 { IBM }  # UTF-8
                                ibm-5304 { IBM }  # Unicode 2.0, UTF-8 with IBM PUA
                                ibm-5305 { IBM }  # Unicode 2.0, UTF-8
                                ibm-13496 { IBM } # Unicode 3.0, UTF-8 with IBM PUA
                                ibm-13497 { IBM } # Unicode 3.0, UTF-8
                                ibm-17592 { IBM } # Unicode 4.0, UTF-8 with IBM PUA
                                ibm-17593 { IBM } # Unicode 4.0, UTF-8
                                windows-65001 { WINDOWS* }
                                cp1208

# The ICU 2.2 UTF-16/32 converters detect and write a BOM.
UTF-16 { IANA* MIME* JAVA* }    ISO-10646-UCS-2 { IANA }
                                ibm-1204 { IBM* } # UTF-16 with IBM PUA and BOM sensitive
                                ibm-1205 { IBM }  # UTF-16 BOM sensitive
                                unicode
                                csUnicode
                                ucs-2
# The following Unicode CCSIDs (IBM) are not valid in ICU because they are
# considered pure DBCS (exactly 2 bytes) of Unicode,
# and they are a subset of Unicode. ICU does not support their encoding structures.
# 1400 1401 1402 1410 1414 1415 1446 1447 1448 1449 64770 64771 65520 5496 5497 5498 9592 13688
UTF-16BE { IANA* MIME* JAVA* }  x-utf-16be { JAVA }
                                ibm-1200 { IBM* } # UTF-16 BE with IBM PUA
                                ibm-1201 { IBM }  # UTF-16 BE
                                ibm-13488 { IBM } # Unicode 2.0, UTF-16 BE with IBM PUA
                                ibm-13489 { IBM } # Unicode 2.0, UTF-16 BE
                                ibm-17584 { IBM } # Unicode 3.0, UTF-16 BE with IBM PUA
                                ibm-17585 { IBM } # Unicode 3.0, UTF-16 BE
                                ibm-21680 { IBM } # Unicode 4.0, UTF-16 BE with IBM PUA
                                ibm-21681 { IBM } # Unicode 4.0, UTF-16 BE
                                ibm-25776 { IBM } # Unicode 4.1, UTF-16 BE with IBM PUA
                                ibm-25777 { IBM } # Unicode 4.1, UTF-16 BE
                                ibm-61955 { IBM } # UTF-16BE with Gaidai University (Japan) PUA
                                ibm-61956 { IBM } # UTF-16BE with Microsoft HKSCS-Big 5 PUA
                                windows-1201 { WINDOWS* }
                                cp1200
                                cp1201
                                UTF16_BigEndian
                                # ibm-5297 { IBM }  # Unicode 2.0, UTF-16 (BE) (reserved, never used)
                                # iso-10646-ucs-2 { JAVA } # This is ambiguous
                                # ibm-61952 is not a valid CCSID because it's Unicode 1.1
                                # ibm-61953 is not a valid CCSID because it's Unicode 1.0
UTF-16LE { IANA* MIME* JAVA* }  x-utf-16le { JAVA }
                                ibm-1202 { IBM* } # UTF-16 LE with IBM PUA
                                ibm-1203 { IBM }  # UTF-16 LE
                                ibm-13490 { IBM } # Unicode 2.0, UTF-16 LE with IBM PUA
                                ibm-13491 { IBM } # Unicode 2.0, UTF-16 LE
                                ibm-17586 { IBM } # Unicode 3.0, UTF-16 LE with IBM PUA
                                ibm-17587 { IBM } # Unicode 3.0, UTF-16 LE
                                ibm-21682 { IBM } # Unicode 4.0, UTF-16 LE with IBM PUA
                                ibm-21683 { IBM } # Unicode 4.0, UTF-16 LE
                                ibm-25778 { IBM } # Unicode 4.1, UTF-16 LE with IBM PUA
                                ibm-25779 { IBM } # Unicode 4.1, UTF-16 LE
                                UTF16_LittleEndian
                                windows-1200 { WINDOWS* }

UTF-32 { IANA* MIME* }          ISO-10646-UCS-4 { IANA }
                                ibm-1236 { IBM* } # UTF-32 with IBM PUA and BOM sensitive
                                ibm-1237 { IBM }  # UTF-32 BOM sensitive
                                csUCS4
                                ucs-4
UTF-32BE { IANA* }              UTF32_BigEndian
                                ibm-1232 { IBM* } # UTF-32 BE with IBM PUA
                                ibm-1233 { IBM }  # UTF-32 BE
UTF-32LE { IANA* }              UTF32_LittleEndian
                                ibm-1234 { IBM* } # UTF-32 LE, with IBM PUA
                                ibm-1235 { IBM }  # UTF-32 LE

# ICU-specific names for special uses
UTF16_PlatformEndian
UTF16_OppositeEndian

UTF32_PlatformEndian
UTF32_OppositeEndian

# On UTF-7:
# RFC 2152 (http://www.imc.org/rfc2152) allows to encode some US-ASCII
# characters directly or in base64. Especially, the characters in set O
# as defined in the RFC (!"#$%&*;<=>@[]^_`{|}) may be encoded directly
# but are not allowed in, e.g., email headers.
# By default, the ICU UTF-7 converter encodes set O directly.
# By choosing the option "version=1", set O will be escaped instead.
# For example:
#     utf7Converter=ucnv_open("UTF-7,version=1");
#
# For details about email headers see RFC 2047.
UTF-7 { IANA* MIME* WINDOWS }   windows-65000 { WINDOWS* }

# UTF-EBCDIC doesn't exist in ICU, but the aliases are here for reference.
#UTF-EBCDIC ibm-1210 { IBM* } ibm-1211 { IBM }

# IMAP-mailbox-name is an ICU-specific name for the encoding of IMAP mailbox names.
# It is a substantially modified UTF-7 encoding. See the specification in:
#
# RFC 2060: INTERNET MESSAGE ACCESS PROTOCOL - VERSION 4rev1
# (http://www.ietf.org/rfc/rfc2060.txt)
# Section 5.1.3.  Mailbox International Naming Convention
IMAP-mailbox-name

SCSU { IANA* }
    ibm-1212 { IBM }  # SCSU with IBM PUA
    ibm-1213 { IBM* } # SCSU
BOCU-1 { IANA* }
    csBOCU-1 { IANA }
    ibm-1214 { IBM }  # BOCU-1 with IBM PUA
    ibm-1215 { IBM* } # BOCU-1

# See http://www.unicode.org/unicode/reports/tr26 for this Compatibility Encoding Scheme for UTF-16
# The Unicode Consortium does not encourage the use of CESU-8
CESU-8 { IANA* } ibm-9400 { IBM* }

# Standard iso-8859-1, which does not have the Euro update.
# See iso-8859-15 (latin9) for the Euro update
ISO-8859-1 { MIME* IANA JAVA* }
    ibm-819 { IBM* JAVA }    # This is not truely ibm-819 because it's missing the fallbacks.
    IBM819 { IANA }
    cp819 { IANA JAVA }
    latin1 { IANA JAVA }
    8859_1 { JAVA }
    csISOLatin1 { IANA JAVA }
    iso-ir-100 { IANA JAVA }
    ISO_8859-1:1987 { IANA* JAVA }
    l1 { IANA JAVA }
    819 { JAVA }
    # windows-28591 { WINDOWS* } # This has odd behavior because it has the Euro update, which isn't correct.
    # LATIN_1     # Old ICU name
    # ANSI_X3.110-1983  # This is for a different IANA alias.  This isn't iso-8859-1.

US-ASCII { MIME* IANA JAVA WINDOWS }
    ASCII { JAVA* IANA WINDOWS }
    ANSI_X3.4-1968 { IANA* WINDOWS }
    ANSI_X3.4-1986 { IANA WINDOWS }
    ISO_646.irv:1991 { IANA WINDOWS }
    iso_646.irv:1983 { JAVA }
    ISO646-US { JAVA IANA WINDOWS }
    us { IANA }
    csASCII { IANA WINDOWS }
    iso-ir-6 { IANA }
    cp367 { IANA WINDOWS }
    ascii7 { JAVA }
    646 { JAVA }
    windows-20127 { WINDOWS* }
    ibm-367 { IBM* } IBM367 { IANA WINDOWS } # This is not truely ibm-367 because it's missing the fallbacks.

# GB 18030 is partly algorithmic, using the MBCS converter
gb18030 { IANA* }       ibm-1392 { IBM* } windows-54936 { WINDOWS* }

# Table-based interchange codepages

# Central Europe
ibm-912_P100-1995 { UTR22* }
                        ibm-912 { IBM* JAVA }
                        ISO-8859-2 { MIME* IANA JAVA* WINDOWS }
                        ISO_8859-2:1987 { IANA* WINDOWS JAVA }
                        latin2 { IANA WINDOWS JAVA }
                        csISOLatin2 { IANA WINDOWS JAVA }
                        iso-ir-101 { IANA WINDOWS JAVA }
                        l2 { IANA WINDOWS JAVA }
                        8859_2 { JAVA }
                        cp912 { JAVA }
                        912 { JAVA }
                        windows-28592 { WINDOWS* }

# Maltese Esperanto
ibm-913_P100-2000 { UTR22* }
                        ibm-913 { IBM* JAVA }
                        ISO-8859-3 { MIME* IANA WINDOWS JAVA* }
                        ISO_8859-3:1988 { IANA* WINDOWS JAVA }
                        latin3 { IANA JAVA WINDOWS }
                        csISOLatin3 { IANA WINDOWS }
                        iso-ir-109 { IANA WINDOWS JAVA }
                        l3 { IANA WINDOWS JAVA }
                        8859_3 { JAVA }
                        cp913 { JAVA }
                        913 { JAVA }
                        windows-28593 { WINDOWS* }

# Baltic
ibm-914_P100-1995 { UTR22* }
                        ibm-914 { IBM* JAVA }
                        ISO-8859-4 { MIME* IANA WINDOWS JAVA* }
                        latin4 { IANA WINDOWS JAVA }
                        csISOLatin4 { IANA WINDOWS JAVA }
                        iso-ir-110 { IANA WINDOWS JAVA }
                        ISO_8859-4:1988 { IANA* WINDOWS JAVA }
                        l4 { IANA WINDOWS JAVA }
                        8859_4 { JAVA }
                        cp914 { JAVA }
                        914 { JAVA }
                        windows-28594 { WINDOWS* }

# Cyrillic
ibm-915_P100-1995 { UTR22* }
                        ibm-915 { IBM* JAVA }
                        ISO-8859-5 { MIME* IANA WINDOWS JAVA* }
                        cyrillic { IANA WINDOWS JAVA }
                        csISOLatinCyrillic { IANA WINDOWS JAVA }
                        iso-ir-144 { IANA WINDOWS JAVA }
                        ISO_8859-5:1988 { IANA* WINDOWS JAVA }
                        8859_5 { JAVA }
                        cp915 { JAVA }
                        915 { JAVA }
                        windows-28595 { WINDOWS* }

# Arabic
# ISO_8859-6-E and ISO_8859-6-I are similar to this charset, but BiDi is done differently
# From a narrow mapping point of view, there is no difference.
# -E means explicit. -I means implicit.
# -E requires the client to handle the ISO 6429 bidirectional controls
ibm-1089_P100-1995 { UTR22* }
                        ibm-1089 { IBM* JAVA }
                        ISO-8859-6 { MIME* IANA WINDOWS JAVA* }
                        arabic { IANA WINDOWS JAVA }
                        csISOLatinArabic { IANA WINDOWS JAVA }
                        iso-ir-127 { IANA WINDOWS JAVA }
                        ISO_8859-6:1987 { IANA* WINDOWS JAVA }
                        ECMA-114 { IANA JAVA }
                        ASMO-708 { IANA JAVA }
                        8859_6 { JAVA }
                        cp1089 { JAVA }
                        1089 { JAVA }
                        windows-28596 { WINDOWS* }
                        ISO-8859-6-I { IANA MIME } # IANA considers this alias different and BiDi needs to be applied.
                        ISO-8859-6-E { IANA MIME } # IANA considers this alias different and BiDi needs to be applied.

# ISO Greek (with euro update). This is really ISO_8859-7:2003
ibm-9005_X110-2007 { UTR22* }
                        ibm-9005 { IBM* }
                        ISO-8859-7 { MIME* IANA WINDOWS }
                        greek { IANA WINDOWS }
                        greek8 { IANA WINDOWS }
                        ELOT_928 { IANA WINDOWS }
                        ECMA-118 { IANA WINDOWS }
                        csISOLatinGreek { IANA WINDOWS }
                        iso-ir-126 { IANA WINDOWS }
                        ISO_8859-7:1987 { IANA* WINDOWS }
                        windows-28597 { WINDOWS* }

# ISO Greek (w/o euro update)
# JDK 1.5 has these aliases.
ibm-813_P100-1995 { UTR22* }
                        ibm-813 { IBM* JAVA }
                        ISO-8859-7 { JAVA* }
                        greek { JAVA }
                        greek8 { JAVA }
                        ELOT_928 { JAVA }
                        ECMA-118 { JAVA }
                        csISOLatinGreek { JAVA }
                        iso-ir-126 { JAVA }
                        ISO_8859-7:1987 { JAVA }
                        8859_7 { JAVA }
                        cp813 { JAVA }
                        813 { JAVA }

# hebrew
# ISO_8859-8-E and ISO_8859-8-I are similar to this charset, but BiDi is done differently
# From a narrow mapping point of view, there is no difference.
# -E means explicit. -I means implicit.
# -E requires the client to handle the ISO 6429 bidirectional controls
# This matches the official mapping on unicode.org
ibm-5012_P100-1999 { UTR22* }
                        ibm-5012 { IBM* }
                        ISO-8859-8 { MIME* IANA WINDOWS JAVA* }
                        hebrew { IANA WINDOWS JAVA }
                        csISOLatinHebrew { IANA WINDOWS JAVA }
                        iso-ir-138 { IANA WINDOWS JAVA }
                        ISO_8859-8:1988 { IANA* WINDOWS JAVA }
                        ISO-8859-8-I { IANA MIME } # IANA and Windows considers this alias different and BiDi needs to be applied.
                        ISO-8859-8-E { IANA MIME } # IANA and Windows considers this alias different and BiDi needs to be applied.
                        8859_8 { JAVA }
                        windows-28598 { WINDOWS* } # Hebrew (ISO-Visual). A hybrid between ibm-5012 and ibm-916 with extra PUA mappings.

# Unfortunately, the Java aliases are split across ibm-916 and ibm-5012
# Also many platforms are a combination between ibm-916 and ibm-5012 behaviors
ibm-916_P100-1995 { UTR22* }
                        ibm-916 { IBM* JAVA* }
                        cp916 { JAVA }
                        916 { JAVA }

# Turkish
ibm-920_P100-1995 { UTR22* }
                        ibm-920 { IBM* JAVA }
                        ISO-8859-9 { MIME* IANA WINDOWS JAVA* }
                        latin5 { IANA WINDOWS JAVA }
                        csISOLatin5 { IANA JAVA }
                        iso-ir-148 { IANA WINDOWS JAVA }
                        ISO_8859-9:1989 { IANA* WINDOWS }
                        l5 { IANA WINDOWS JAVA }
                        8859_9 { JAVA }
                        cp920 { JAVA }
                        920 { JAVA }
                        windows-28599 { WINDOWS* }
                        ECMA-128    # IANA doesn't have this alias 6/24/2002

# Nordic languages
iso-8859_10-1998 { UTR22* } ISO-8859-10 { MIME* IANA* }
                        iso-ir-157 { IANA }
                        l6 { IANA }
                        ISO_8859-10:1992 { IANA }
                        csISOLatin6 { IANA }
                        latin6 { IANA }

# Thai
# Be warned. There several iso-8859-11 codepage variants, and they are all incompatible.
# ISO-8859-11 is a superset of TIS-620. The difference is that ISO-8859-11 contains the C1 control codes.
iso-8859_11-2001 { UTR22* } ISO-8859-11
                        thai8 # HP-UX alias. HP-UX says TIS-620, but it's closer to ISO-8859-11.

# iso-8859-13, PC Baltic (w/o euro update)
ibm-921_P100-1995 { UTR22* }
                        ibm-921 { IBM* }
                        ISO-8859-13 { IANA* MIME* JAVA* }
                        8859_13 { JAVA }
                        windows-28603 { WINDOWS* }
                        cp921
                        921

# Celtic
iso-8859_14-1998 { UTR22* } ISO-8859-14 { IANA* }
                        iso-ir-199 { IANA }
                        ISO_8859-14:1998 { IANA }
                        latin8 { IANA }
                        iso-celtic { IANA }
                        l8 { IANA }

# Latin 9
ibm-923_P100-1998 { UTR22* }
                        ibm-923 { IBM* JAVA }
                        ISO-8859-15 { IANA* MIME* WINDOWS JAVA* }
                        Latin-9 { IANA WINDOWS }
                        l9 { WINDOWS }
                        8859_15 { JAVA }
                        latin0 { JAVA }
                        csisolatin0 { JAVA }
                        csisolatin9 { JAVA }
                        iso8859_15_fdis { JAVA }
                        cp923 { JAVA }
                        923 { JAVA }
                        windows-28605 { WINDOWS* }

# CJK encodings

ibm-942_P12A-1999 { UTR22* }    # ibm-942_P120 is a rarely used alternate mapping (sjis78 is already old)
                        ibm-942 { IBM* }
                        ibm-932 { IBM }
                        cp932
                        shift_jis78
                        sjis78
                        ibm-942_VSUB_VPUA
                        ibm-932_VSUB_VPUA
                        # Is this "JIS_C6226-1978"?

# ibm-943_P15A-2003 differs from windows-932-2000 only in a few roundtrip mappings:
# - the usual IBM PC control code rotation (1A-1C-7F)
# - the Windows table has roundtrips for bytes 80, A0, and FD-FF to U+0080 and PUA
ibm-943_P15A-2003 { UTR22* }
                        ibm-943 # Leave untagged because this isn't the default
                        Shift_JIS { IANA* MIME* WINDOWS JAVA }
                        MS_Kanji { IANA WINDOWS JAVA }
                        csShiftJIS { IANA WINDOWS JAVA }
                        windows-31j { IANA JAVA } # A further extension of Shift_JIS to include NEC special characters (Row 13)
                        csWindows31J { IANA WINDOWS JAVA } # A further extension of Shift_JIS to include NEC special characters (Row 13)
                        x-sjis { WINDOWS JAVA }
                        x-ms-cp932 { WINDOWS }
                        cp932 { WINDOWS }
                        windows-932 { WINDOWS* }
                        cp943c { JAVA* }    # This is slightly different, but the backslash mapping is the same.
                        IBM-943C #{ AIX* } # Add this tag once AIX aliases becomes available
                        ms932
                        pck     # Probably SOLARIS
                        sjis    # This might be for ibm-1351
                        ibm-943_VSUB_VPUA
                        # cp943 # This isn't Windows, and no one else uses it.
                        # IANA says that Windows-31J is an extension to csshiftjis ibm-932 
ibm-943_P130-1999 { UTR22* }
                        ibm-943 { IBM* JAVA }
                        Shift_JIS # Leave untagged because this isn't the default
                        cp943 { JAVA* }    # This is slightly different, but the backslash mapping is the same.
                        943 { JAVA }
                        ibm-943_VASCII_VSUB_VPUA
                        # japanese. Unicode name is \u30b7\u30d5\u30c8\u7b26\u53f7\u5316\u8868\u73fe
ibm-33722_P12A_P12A-2004_U2 { UTR22* }
                        ibm-33722   # Leave untagged because this isn't the default
                        ibm-5050    # Leave untagged because this isn't the default, and yes this alias is correct
                        EUC-JP { IANA MIME* WINDOWS }
                        Extended_UNIX_Code_Packed_Format_for_Japanese { IANA* WINDOWS }
                        csEUCPkdFmtJapanese { IANA WINDOWS }
                        X-EUC-JP { WINDOWS }   # Japan EUC. x-euc-jp is a MIME name
                        windows-51932 { WINDOWS* }
                        ibm-33722_VPUA
                        IBM-eucJP
ibm-33722_P120-1999 { UTR22* }  # Japan EUC with \ <-> Yen mapping
                        ibm-33722 { IBM* JAVA }
                        ibm-5050 { IBM }    # Yes this is correct
                        cp33722 { JAVA* }
                        33722 { JAVA }
                        ibm-33722_VASCII_VPUA
# ibm-954 seems to be almost a superset of ibm-33722 and ibm-1350
# ibm-1350 seems to be almost a superset of ibm-33722
# ibm-954 contains more PUA characters than the others.
ibm-954_P101-2007 { UTR22* }
                        ibm-954 { IBM* }
                        EUC-JP { JAVA* } # Matches more closely with ibm-1350
                        Extended_UNIX_Code_Packed_Format_for_Japanese { JAVA }
                        csEUCPkdFmtJapanese { JAVA }
                        X-EUC-JP { JAVA }   # Japan EUC. x-euc-jp is a MIME name
                        eucjis { JAVA }
                        ujis # Linux sometimes uses this name. This is an unfortunate generic and rarely used name. Its use is discouraged.
                        # eucJP # This is closest to Solaris EUC-JP.

# Here are various interpretations and extentions of Big5
ibm-1373_P100-2002 { UTR22* } # IBM's interpretation of Windows' Taiwan Big-5 without HKSCS extensions
                        ibm-1373 { IBM* }
                        windows-950 # Alternate mapping. Leave untagged. This is the IBM interpretation of a Windows codepage.
windows-950-2000 { UTR22* }
                        Big5 { IANA* MIME* JAVA* WINDOWS }
                        csBig5 { IANA WINDOWS }
                        windows-950 { WINDOWS* }
                        x-big5
ibm-950_P110-1999 { UTR22* }                # Taiwan Big-5 (w/o euro update)
                        ibm-950 { IBM* JAVA }
                        cp950 { JAVA* }
                        950 { JAVA }
ibm-1375_P100-2007 { UTR22* }   # Big5-HKSCS-2004 with Unicode 3.1 mappings. This uses supplementary characters.
                        ibm-1375 { IBM* }
                        Big5-HKSCS { IANA* JAVA* }
                        big5hk { JAVA }
                        HKSCS-BIG5  # From http://www.openi18n.org/localenameguide/
ibm-5471_P100-2006 { UTR22* }   # Big5-HKSCS-2001 with Unicode 3.0 mappings. This uses many PUA characters.
                        ibm-5471 { IBM* }
                        Big5-HKSCS
                        MS950_HKSCS { JAVA* }
                        hkbig5 # from HP-UX 11i, which can't handle supplementary characters.
                        big5-hkscs:unicode3.0
                        # windows-950 # Windows-950 can be w/ or w/o HKSCS extensions. By default it's not.
                        # windows-950_hkscs

# GBK
ibm-1386_P100-2001  { UTR22* }
                        ibm-1386 { IBM* }
                        cp1386
                        windows-936 # Alternate mapping. Leave untagged. This is the IBM interpretation of a Windows codepage.
                        ibm-1386_VSUB_VPUA
windows-936-2000 { UTR22* }
                        GBK { IANA* WINDOWS JAVA* }
                        CP936 { IANA JAVA }
                        MS936 { IANA }  # In JDK 1.5, this goes to x-mswin-936. This is an IANA name split.
                        windows-936 { IANA WINDOWS* JAVA }

# Java has two different tables for ibm-1383 and gb2312. We pick closest set for tagging.
ibm-1383_P110-1999 { UTR22* }       # China EUC.
                        ibm-1383 { IBM* JAVA }
                        GB2312 { IANA* MIME* }
                        csGB2312 { IANA }
                        cp1383 { JAVA* }
                        1383 { JAVA }
                        EUC-CN  # According to other platforms, windows-20936 looks more like euc-cn. x-euc-cn is also a MIME name
                        ibm-eucCN
                        hp15CN  # From HP-UX?
                        ibm-1383_VPUA
                        # gb          # This is not an IANA name. gb in IANA means Great Britain.

ibm-5478_P100-1995 { UTR22* } ibm-5478 { IBM* } # This gb_2312_80 DBCS mapping is needed by iso-2022.
                        GB_2312-80 { IANA* }    # Windows maps this alias incorrectly
                        chinese { IANA }
                        iso-ir-58 { IANA }
                        csISO58GB231280 { IANA }
                        gb2312-1980
                        GB2312.1980-0   # From X11R6

ibm-964_P110-1999 { UTR22* }                # Taiwan EUC. x-euc-tw is a MIME name
                        ibm-964 { IBM* JAVA }
                        EUC-TW
                        ibm-eucTW
                        cns11643 
                        cp964 { JAVA* }
                        964 { JAVA }
                        ibm-964_VPUA

# ISO-2022 needs one, and other people may need others.
ibm-949_P110-1999 { UTR22* }
                        ibm-949 { IBM* JAVA }
                        cp949 { JAVA* }
                        949 { JAVA }
                        ibm-949_VASCII_VSUB_VPUA
ibm-949_P11A-1999 { UTR22* }
                        ibm-949 # Leave untagged because this isn't the default
                        cp949c { JAVA* }
                        ibm-949_VSUB_VPUA

# Korean EUC.
#
# <quote from="Jungshik Shin">
# EUC-KR = KS X 1003/ISO 646-KR or ISO 646-IRV/US-ASCII in GL and KS X 1001:1998 (formerly KS C 5601-1987) in GR.
#
# Although widely spread on MS Windows, using 
# KS C 5601 or related names to denote EUC-KR or
# windows-949 is very much misleading. KS C 5601-1987
# is NOT suitable as a designation for MIME charset
# and MBCS. It's just the name of a 94 x 94 Korean 
# coded character set standard which can be invoked
# on either GL (with MSB reset) or GR (with MSB set).
# Note that JOHAB (windows-1361) specified in 
# KS X 1001:1998 annex 3 (KS C 5601-1992 annex 3) 
# is a _seprate_ MBCS with a _completely different_
# mapping.
# </quote>
#
# The following aliases tries to mirror the poor state of alias recognition
# on these platforms.
#
# ibm-970 is almost a subset of ibm-1363.
# Java, Solaris and AIX use euc-kr to also mean ksc5601.
# Java has both ibm-970 and EUC-KR as separate converters.
ibm-970_P110_P110-2006_U2 { UTR22* }
                        ibm-970 { IBM* JAVA }
                        EUC-KR { IANA* MIME* WINDOWS JAVA }
                        KS_C_5601-1987 { JAVA }
                        windows-51949 { WINDOWS* }
                        csEUCKR { IANA WINDOWS }  # x-euc-kr is also a MIME name
                        ibm-eucKR { JAVA }
                        KSC_5601 { JAVA } # Needed by iso-2022
                        5601 { JAVA }
                        cp970 { JAVA* }
                        970 { JAVA }
                        ibm-970_VPUA

# ibm-971 is almost the set of DBCS mappings of ibm-970
ibm-971_P100-1995       ibm-971 { IBM* } ibm-971_VPUA

# Java, Solaris and AIX use euc-kr to also mean ksc5601, and _sometimes_ for Windows too.
# ibm-1363 is almost a superset of ibm-970.
ibm-1363_P11B-1998 { UTR22* }
                        ibm-1363 # Leave untagged because this isn't the default
                        KS_C_5601-1987 { IANA* }
                        KS_C_5601-1989 { IANA }
                        KSC_5601 { MIME* IANA } # Needed by iso-2022
                        csKSC56011987 { IANA }
                        korean { IANA }
                        iso-ir-149 { IANA }
                        5601
                        cp1363
                        ksc
                        windows-949 # Alternate mapping. Leave untagged. This is the IBM interpretation of a Windows codepage.
                        ibm-1363_VSUB_VPUA
                        # ks_x_1001:1992
                        # ksc5601-1992

ibm-1363_P110-1997 { UTR22* } # Korean KSC MBCS with \ <-> Won mapping
                        ibm-1363 { IBM* }
                        ibm-1363_VASCII_VSUB_VPUA

windows-949-2000 { UTR22* }
                        windows-949 { JAVA* WINDOWS* }
                        KS_C_5601-1987 { WINDOWS }
                        KS_C_5601-1989 { WINDOWS }
                        KSC_5601 { WINDOWS } # Needed by iso-2022
                        csKSC56011987 { WINDOWS }
                        korean { WINDOWS }
                        iso-ir-149 { WINDOWS }
                        ms949 { JAVA }

windows-874-2000 { UTR22* }   # Thai (w/ euro update)
                        TIS-620 { WINDOWS }
                        windows-874 { JAVA* WINDOWS* }
                        MS874 { JAVA }
                        # iso-8859-11 { WINDOWS } # iso-8859-11 is similar to TIS-620. ibm-13162 is a closer match.

ibm-874_P100-1995 { UTR22* }    # Thai PC (w/o euro update).
                        ibm-874 { IBM* JAVA }
                        ibm-9066 { IBM }    # Yes ibm-874 == ibm-9066. ibm-1161 has the euro update.
                        cp874 { JAVA* }
                        TIS-620 { IANA* JAVA }  # This is actually separate from ibm-874, which is similar to this table
                        tis620.2533 { JAVA }    # This is actually separate from ibm-874, which is similar to this table
                        eucTH               # eucTH is an unusual alias from Solaris.  eucTH has fewer mappings than TIS620

ibm-1162_P100-1999 { UTR22* }   # Thai (w/ euro update)
                        ibm-1162 { IBM* }

# Platform codepages
# If Java supports the IBM prefix, it should also support the ibm- prefix too.
ibm-437_P100-1995 { UTR22* }    ibm-437 { IBM* } IBM437 { IANA* WINDOWS JAVA } cp437 { IANA WINDOWS JAVA* } 437 { IANA WINDOWS JAVA } csPC8CodePage437 { IANA JAVA } windows-437 { WINDOWS* }  # PC US
ibm-720_P100-1997 { UTR22* }    ibm-720 { IBM* } windows-720 { WINDOWS* } DOS-720 { WINDOWS } # PC Arabic
ibm-737_P100-1997 { UTR22* }    ibm-737 { IBM* } IBM737 { WINDOWS JAVA } cp737 { JAVA* } windows-737 { WINDOWS* } 737 { JAVA } # PC Greek
ibm-775_P100-1996 { UTR22* }    ibm-775 { IBM* } IBM775 { IANA* WINDOWS JAVA } cp775 { IANA WINDOWS JAVA* } csPC775Baltic { IANA } windows-775 { WINDOWS* } 775 { JAVA } # PC Baltic
ibm-850_P100-1995 { UTR22* }    ibm-850 { IBM* } IBM850 { IANA* WINDOWS JAVA } cp850 { IANA MIME* WINDOWS JAVA* } 850 { IANA JAVA } csPC850Multilingual { IANA JAVA } windows-850 { WINDOWS* } # PC latin1
ibm-851_P100-1995 { UTR22* }    ibm-851 { IBM* } IBM851 { IANA* } cp851 { IANA MIME* } 851 { IANA } csPC851 { IANA }             # PC DOS Greek (w/o euro)
ibm-852_P100-1995 { UTR22* }    ibm-852 { IBM* } IBM852 { IANA* WINDOWS JAVA } cp852 { IANA WINDOWS JAVA* } 852 { IANA WINDOWS JAVA } csPCp852 { IANA JAVA } windows-852 { WINDOWS* } # PC latin2 (w/o euro update)
ibm-855_P100-1995 { UTR22* }    ibm-855 { IBM* } IBM855 { IANA* JAVA } cp855 { IANA JAVA* } 855 { IANA } csIBM855 { IANA } csPCp855 { JAVA } # PC cyrillic (w/o euro update)
ibm-856_P100-1995 { UTR22* }    ibm-856 { IBM* } IBM856 { JAVA } cp856 { MIME* JAVA* } 856 { JAVA }  # PC Hebrew implicit order
ibm-857_P100-1995 { UTR22* }    ibm-857 { IBM* } IBM857 { IANA* WINDOWS JAVA } cp857 { IANA MIME* JAVA* } 857 { IANA JAVA } csIBM857 { IANA JAVA } windows-857 { WINDOWS* }   # PC Latin 5 (w/o euro update)
ibm-858_P100-1997 { UTR22* }    ibm-858 { IBM* } IBM00858 { IANA* JAVA } CCSID00858 { IANA JAVA } CP00858 { IANA JAVA } PC-Multilingual-850+euro { IANA } cp858 { MIME* JAVA* }  # PC latin1 with Euro
ibm-860_P100-1995 { UTR22* }    ibm-860 { IBM* } IBM860 { IANA* JAVA } cp860 { IANA MIME* JAVA* } 860 { IANA JAVA } csIBM860 { IANA JAVA }    # PC Portugal
ibm-861_P100-1995 { UTR22* }    ibm-861 { IBM* } IBM861 { IANA* WINDOWS JAVA } cp861 { IANA MIME* JAVA* } 861 { IANA JAVA } cp-is { IANA JAVA } csIBM861 { IANA JAVA } windows-861 { WINDOWS* } # PC Iceland
ibm-862_P100-1995 { UTR22* }    ibm-862 { IBM* } IBM862 { IANA* JAVA } cp862 { IANA MIME* JAVA* } 862 { IANA JAVA } csPC862LatinHebrew { IANA JAVA } DOS-862 { WINDOWS } windows-862 { WINDOWS* }    # PC Hebrew visual order (w/o euro update)
ibm-863_P100-1995 { UTR22* }    ibm-863 { IBM* } IBM863 { IANA* JAVA } cp863 { IANA MIME* JAVA* } 863 { IANA JAVA } csIBM863 { IANA JAVA }    # PC Canadian French
ibm-864_X110-1999 { UTR22* }    ibm-864 { IBM* } IBM864 { IANA* JAVA } cp864 { IANA MIME* JAVA* } csIBM864 { IANA JAVA } # PC Arabic (w/o euro update)
ibm-865_P100-1995 { UTR22* }    ibm-865 { IBM* } IBM865 { IANA* JAVA } cp865 { IANA MIME* JAVA* } 865 { IANA JAVA } csIBM865 { IANA JAVA }    # PC Nordic
ibm-866_P100-1995 { UTR22* }    ibm-866 { IBM* } IBM866 { IANA* JAVA } cp866 { IANA MIME* WINDOWS JAVA* } 866 { IANA JAVA } csIBM866 { IANA JAVA } windows-866 { WINDOWS* } # PC Russian (w/o euro update)
ibm-867_P100-1998 { UTR22* }    ibm-867 { IBM* } # PC Hebrew (w/ euro update) Updated version of ibm-862
ibm-868_P100-1995 { UTR22* }    ibm-868 { IBM* } IBM868 { IANA* JAVA } CP868 { IANA MIME* JAVA* } 868 { JAVA } csIBM868 { IANA } cp-ar { IANA }          # PC Urdu
ibm-869_P100-1995 { UTR22* }    ibm-869 { IBM* } IBM869 { IANA* WINDOWS JAVA } cp869 { IANA MIME* JAVA* } 869 { IANA JAVA } cp-gr { IANA JAVA } csIBM869 { IANA JAVA } windows-869 { WINDOWS* } # PC Greek (w/o euro update)
ibm-878_P100-1996 { UTR22* }    ibm-878 { IBM* } KOI8-R { IANA* MIME* WINDOWS JAVA* } koi8 { WINDOWS JAVA } csKOI8R { IANA WINDOWS JAVA } windows-20866 { WINDOWS* } cp878   # Russian internet
ibm-901_P100-1999 { UTR22* }    ibm-901 { IBM* } # PC Baltic (w/ euro update), update of ibm-921
ibm-902_P100-1999 { UTR22* }    ibm-902 { IBM* } # PC Estonian (w/ euro update), update of ibm-922
ibm-922_P100-1999 { UTR22* }    ibm-922 { IBM* } IBM922 { JAVA } cp922 { MIME* JAVA* } 922 { JAVA } # PC Estonian (w/o euro update)
ibm-1168_P100-2002 { UTR22* }   ibm-1168 { IBM* } KOI8-U { IANA* WINDOWS } windows-21866 { WINDOWS* } koi8-ru { WINDOWS }   # Ukrainian KOI8. koi8-ru is an unusual alias, but Microsoft states that it is an alias.
ibm-4909_P100-1999 { UTR22* }   ibm-4909 { IBM* } # ISO Greek (w/ euro update), update of ibm-813

# The cp aliases in this section aren't really windows aliases, but it was used by ICU for Windows.
# cp is usually used to denote IBM in Java, and that is why we don't do that anymore.
# The windows-* aliases mean windows codepages.
ibm-5346_P100-1998 { UTR22* }   ibm-5346 { IBM* } windows-1250 { IANA* JAVA* WINDOWS* } cp1250 { WINDOWS JAVA } # Windows Latin2 (w/ euro update)
ibm-5347_P100-1998 { UTR22* }   ibm-5347 { IBM* } windows-1251 { IANA* JAVA* WINDOWS* } cp1251 { WINDOWS JAVA } ANSI1251 # Windows Cyrillic (w/ euro update). ANSI1251 is from Solaris
ibm-5348_P100-1997 { UTR22* }   ibm-5348 { IBM* } windows-1252 { IANA* JAVA* WINDOWS* } cp1252 { JAVA }         # Windows Latin1 (w/ euro update)
ibm-5349_P100-1998 { UTR22* }   ibm-5349 { IBM* } windows-1253 { IANA* JAVA* WINDOWS* } cp1253 { JAVA }         # Windows Greek (w/ euro update)
ibm-5350_P100-1998 { UTR22* }   ibm-5350 { IBM* } windows-1254 { IANA* JAVA* WINDOWS* } cp1254 { JAVA }         # Windows Turkish (w/ euro update)
ibm-9447_P100-2002 { UTR22* }   ibm-9447 { IBM* } windows-1255 { IANA* JAVA* WINDOWS* } cp1255 { JAVA }         # Windows Hebrew (w/ euro update)
ibm-9448_X100-2005 { UTR22* }   ibm-9448 { IBM* } windows-1256 { IANA* JAVA* WINDOWS* } cp1256 { WINDOWS JAVA } # Windows Arabic (w/ euro update)
ibm-9449_P100-2002 { UTR22* }   ibm-9449 { IBM* } windows-1257 { IANA* JAVA* WINDOWS* } cp1257 { JAVA }         # Windows Baltic (w/ euro update)
ibm-5354_P100-1998 { UTR22* }   ibm-5354 { IBM* } windows-1258 { IANA* JAVA* WINDOWS* } cp1258 { JAVA }         # Windows Vietnamese (w/ euro update)

# These tables are out of date, and most don't have the Euro
# Leave the windows- variants untagged. They are alternate tables of the newer ones above.
ibm-1250_P100-1995 { UTR22* }   ibm-1250 { IBM* } windows-1250  # Old Windows Latin2 (w/o euro update)
ibm-1251_P100-1995 { UTR22* }   ibm-1251 { IBM* } windows-1251  # Old Windows Cyrillic (w/o euro update)
ibm-1252_P100-2000 { UTR22* }   ibm-1252 { IBM* } windows-1252  # Old Windows Latin 1 without Euro
ibm-1253_P100-1995 { UTR22* }   ibm-1253 { IBM* } windows-1253  # Old Windows Greek (w/o euro update)
ibm-1254_P100-1995 { UTR22* }   ibm-1254 { IBM* } windows-1254  # Old Windows Turkish (w/o euro update)
ibm-1255_P100-1995 { UTR22* }   ibm-1255 { IBM* }               # Very old Windows Hebrew (w/o euro update)
ibm-5351_P100-1998 { UTR22* }   ibm-5351 { IBM* } windows-1255  # Old Windows Hebrew (w/ euro update)
ibm-1256_P110-1997 { UTR22* }   ibm-1256 { IBM* }               # Old Windows Arabic (w/o euro update)
ibm-5352_P100-1998 { UTR22* }   ibm-5352 { IBM* } windows-1256  # Somewhat old Windows Arabic (w/ euro update)
ibm-1257_P100-1995 { UTR22* }   ibm-1257 { IBM* }               # Old Windows Baltic (w/o euro update)
ibm-5353_P100-1998 { UTR22* }   ibm-5353 { IBM* } windows-1257  # Somewhat old Windows Baltic (w/ euro update)
ibm-1258_P100-1997 { UTR22* }   ibm-1258 { IBM* } windows-1258  # Old Windows Vietnamese (w/o euro update)

macos-0_2-10.2 { UTR22* }       macintosh { IANA* MIME* WINDOWS } mac { IANA } csMacintosh { IANA } windows-10000 { WINDOWS* } # Apple latin 1
macos-6_2-10.4 { UTR22* }       x-mac-greek { MIME* WINDOWS } windows-10006 { WINDOWS* } macgr           # Apple Greek
macos-7_3-10.2 { UTR22* }       x-mac-cyrillic { MIME* WINDOWS } windows-10007 { WINDOWS* } mac-cyrillic maccy # Apple Cyrillic
macos-29-10.2 { UTR22* }        x-mac-centraleurroman { MIME* } windows-10029 { WINDOWS* } x-mac-ce { WINDOWS } macce   # Apple Central Europe
macos-35-10.2 { UTR22* }        x-mac-turkish { MIME* WINDOWS } windows-10081 { WINDOWS* } mactr         # Apple Turkish

ibm-1051_P100-1995 { UTR22* }   ibm-1051 { IBM* } hp-roman8 { IANA* } roman8 { IANA } r8 { IANA } csHPRoman8 { IANA }   # HP Latin1
ibm-1276_P100-1995 { UTR22* }   ibm-1276 { IBM* } Adobe-Standard-Encoding { IANA* } csAdobeStandardEncoding { IANA } # Different from ISO-Unicode-IBM-1276 (GCSGID: 1276)

ibm-1006_P100-1995 { UTR22* }   ibm-1006 { IBM* } IBM1006 { JAVA } cp1006 { JAVA* } 1006 { JAVA }   # Urdu
ibm-1098_P100-1995 { UTR22* }   ibm-1098 { IBM* } IBM1098 { JAVA } cp1098 { JAVA* } 1098 { JAVA }   # PC Farsi
ibm-1124_P100-1996 { UTR22* }   ibm-1124 { IBM* JAVA } cp1124 { JAVA* } 1124 { JAVA }   # ISO Cyrillic Ukraine
ibm-1125_P100-1997 { UTR22* }   ibm-1125 { IBM* } cp1125                                # Cyrillic Ukraine PC
ibm-1129_P100-1997 { UTR22* }   ibm-1129 { IBM* }                                       # ISO Vietnamese
ibm-1131_P100-1997 { UTR22* }   ibm-1131 { IBM* } cp1131                                # Cyrillic Belarus PC
ibm-1133_P100-1997 { UTR22* }   ibm-1133 { IBM* }                                       # ISO Lao


# Partially algorithmic converters

# [U_ENABLE_GENERIC_ISO_2022]
# The _generic_ ISO-2022 converter is disabled starting 2003-dec-03 (ICU 2.8).
# For details see the icu mailing list from 2003-dec-01 and the ucnv2022.c file.
# Language-specific variants of ISO-2022 continue to be available as listed below.
# ISO_2022                         ISO-2022

ISO_2022,locale=ja,version=0    ISO-2022-JP { IANA* MIME* JAVA* } csISO2022JP { IANA JAVA }
ISO_2022,locale=ja,version=1    ISO-2022-JP-1 JIS_Encoding { IANA* } csJISEncoding { IANA } ibm-5054 { IBM* } JIS
ISO_2022,locale=ja,version=2    ISO-2022-JP-2 { IANA* MIME* } csISO2022JP2 { IANA }
ISO_2022,locale=ja,version=3    JIS7
ISO_2022,locale=ja,version=4    JIS8
ISO_2022,locale=ko,version=0    ISO-2022-KR { IANA* MIME* JAVA* } csISO2022KR { IANA JAVA } # This uses ibm-949
ISO_2022,locale=ko,version=1    ibm-25546 { IBM* }
ISO_2022,locale=zh,version=0    ISO-2022-CN { IANA* JAVA* } csISO2022CN { JAVA }
ISO_2022,locale=zh,version=1    ISO-2022-CN-EXT { IANA* }
HZ                              HZ-GB-2312 { IANA* }

# Part of iso-2022
ibm-897_P100-1995 { UTR22* }    ibm-897 { IBM* } JIS_X0201 { IANA* } X0201 { IANA } csHalfWidthKatakana { IANA }


ISCII,version=0         x-iscii-de { WINDOWS } windows-57002 { WINDOWS* } iscii-dev ibm-4902 { IBM* } # ibm-806 contains non-standard box drawing symbols.
ISCII,version=1         x-iscii-be { WINDOWS } windows-57003 { WINDOWS* } iscii-bng windows-57006 { WINDOWS } x-iscii-as { WINDOWS } # be is different from as on Windows.
ISCII,version=2         x-iscii-pa { WINDOWS } windows-57011 { WINDOWS* } iscii-gur
ISCII,version=3         x-iscii-gu { WINDOWS } windows-57010 { WINDOWS* } iscii-guj
ISCII,version=4         x-iscii-or { WINDOWS } windows-57007 { WINDOWS* } iscii-ori
ISCII,version=5         x-iscii-ta { WINDOWS } windows-57004 { WINDOWS* } iscii-tml
ISCII,version=6         x-iscii-te { WINDOWS } windows-57005 { WINDOWS* } iscii-tlg
ISCII,version=7         x-iscii-ka { WINDOWS } windows-57008 { WINDOWS* } iscii-knd
ISCII,version=8         x-iscii-ma { WINDOWS } windows-57009 { WINDOWS* } iscii-mlm

# Lotus specific
LMBCS-1                 lmbcs ibm-65025 { IBM* }

# These Lotus specific converters still work, but they aren't advertised in this alias table.
# These are almost never used outside of Lotus software,
# and they take a lot of time when creating the available converter list.
# Also Lotus doesn't really use them anyway. It was a mistake to create these LMBCS variant converters in ICU.
#LMBCS-2
#LMBCS-3
#LMBCS-4
#LMBCS-5
#LMBCS-6
#LMBCS-8
#LMBCS-11
#LMBCS-16
#LMBCS-17
#LMBCS-18
#LMBCS-19

# EBCDIC codepages according to the CDRA

# without Euro
ibm-37_P100-1995 { UTR22* }              # EBCDIC US
                        ibm-37 { IBM* }
                        IBM037 { IANA* JAVA }
                        ibm-037 # { JAVA }
                        ebcdic-cp-us { IANA JAVA }
                        ebcdic-cp-ca { IANA JAVA }
                        ebcdic-cp-wt { IANA JAVA }
                        ebcdic-cp-nl { IANA JAVA }
                        csIBM037 { IANA JAVA }
                        cp037 { JAVA* }
                        037 { JAVA }
                        cpibm37 { JAVA }
                        cp37

ibm-273_P100-1995 { UTR22* }    ibm-273 { IBM* } IBM273 { IANA* JAVA } CP273 { IANA JAVA* } csIBM273 { IANA } ebcdic-de 273 { JAVA }                 # EBCDIC Germanay, Austria
ibm-277_P100-1995 { UTR22* }    ibm-277 { IBM* } IBM277 { IANA* JAVA } cp277 { JAVA* } EBCDIC-CP-DK { IANA } EBCDIC-CP-NO { IANA } csIBM277 { IANA } ebcdic-dk 277 { JAVA } # EBCDIC Denmark
ibm-278_P100-1995 { UTR22* }    ibm-278 { IBM* } IBM278 { IANA* JAVA } cp278 { JAVA* } ebcdic-cp-fi { IANA } ebcdic-cp-se { IANA } csIBM278 { IANA } ebcdic-sv { JAVA } 278 { JAVA } # EBCDIC Sweden
ibm-280_P100-1995 { UTR22* }    ibm-280 { IBM* } IBM280 { IANA* JAVA } CP280 { IANA JAVA* } ebcdic-cp-it { IANA } csIBM280 { IANA } 280 { JAVA }     # EBCDIC Italy
ibm-284_P100-1995 { UTR22* }    ibm-284 { IBM* } IBM284 { IANA* JAVA } CP284 { IANA JAVA* } ebcdic-cp-es { IANA } csIBM284 { IANA } cpibm284 { JAVA } 284 { JAVA }       # EBCDIC Spain
ibm-285_P100-1995 { UTR22* }    ibm-285 { IBM* } IBM285 { IANA* JAVA } CP285 { IANA JAVA* } ebcdic-cp-gb { IANA } csIBM285 { IANA } cpibm285 { JAVA } ebcdic-gb { JAVA } 285 { JAVA } # EBCDIC UK Ireland
ibm-290_P100-1995 { UTR22* }    ibm-290 { IBM* } IBM290 { IANA* } cp290 { IANA } EBCDIC-JP-kana { IANA } csIBM290 { IANA } # host SBCS (Katakana)
ibm-297_P100-1995 { UTR22* }    ibm-297 { IBM* } IBM297 { IANA* JAVA } cp297 { IANA JAVA* } ebcdic-cp-fr { IANA } csIBM297 { IANA } cpibm297 { JAVA } 297 { JAVA }     # EBCDIC France
ibm-420_X120-1999 { UTR22* }    ibm-420 { IBM* } IBM420 { IANA* JAVA } cp420 { IANA JAVA* } ebcdic-cp-ar1 { IANA } csIBM420 { IANA } 420 { JAVA }    # EBCDIC Arabic (all presentation shapes)
ibm-424_P100-1995 { UTR22* }    ibm-424 { IBM* } IBM424 { IANA* JAVA } cp424 { IANA JAVA* } ebcdic-cp-he { IANA } csIBM424 { IANA } 424 { JAVA }     # EBCDIC Hebrew
ibm-500_P100-1995 { UTR22* }    ibm-500 { IBM* } IBM500 { IANA* JAVA } CP500 { IANA JAVA* } ebcdic-cp-be { IANA } csIBM500 { IANA } ebcdic-cp-ch { IANA } 500   # EBCDIC International Latin1
ibm-803_P100-1999 { UTR22* }    ibm-803 { IBM* } cp803   # Old EBCDIC Hebrew
ibm-838_P100-1995 { UTR22* }    ibm-838 { IBM* } IBM838 { JAVA } IBM-Thai { IANA* JAVA } csIBMThai { IANA } cp838 { JAVA* } 838 { JAVA } ibm-9030 { IBM }   # EBCDIC Thai. Yes ibm-9030 is an alias.
ibm-870_P100-1995 { UTR22* }    ibm-870 { IBM* } IBM870 { IANA* JAVA } CP870 { IANA JAVA* } ebcdic-cp-roece { IANA } ebcdic-cp-yu { IANA } csIBM870 { IANA }    # EBCDIC Latin 2 
ibm-871_P100-1995 { UTR22* }    ibm-871 { IBM* } IBM871 { IANA* JAVA } ebcdic-cp-is { IANA JAVA } csIBM871 { IANA JAVA } CP871 { IANA JAVA* } ebcdic-is { JAVA } 871 { JAVA }     # EBCDIC Iceland
ibm-875_P100-1995 { UTR22* }    ibm-875 { IBM* } IBM875 { JAVA } cp875 { JAVA* } 875 { JAVA } # EBCDIC Greek
ibm-918_P100-1995 { UTR22* }    ibm-918 { IBM* } IBM918 { IANA* JAVA } CP918 { IANA JAVA* } ebcdic-cp-ar2 { IANA } csIBM918 { IANA }        # EBCDIC Urdu
ibm-930_P120-1999 { UTR22* }    # EBCDIC_STATEFUL Katakana-Kanji Host Mixed.
                        ibm-930 { IBM* }
                        ibm-5026 { IBM } # Yes this is correct
                        IBM930 { JAVA }
                        cp930 { JAVA* }
                        930 { JAVA }
ibm-933_P110-1995 { UTR22* }    ibm-933 { IBM* JAVA } cp933 { JAVA* } 933 { JAVA } # Korea EBCDIC MIXED
ibm-935_P110-1999 { UTR22* }    ibm-935 { IBM* JAVA } cp935 { JAVA* } 935 { JAVA } # China EBCDIC MIXED. Need to use Unicode, ibm-1388 or gb18030 instead because it is required by the government of China.
ibm-937_P110-1999 { UTR22* }    ibm-937 { IBM* JAVA } cp937 { JAVA* } 937 { JAVA } # Taiwan EBCDIC MIXED
ibm-939_P120-1999 { UTR22* }    # EBCDIC_STATEFUL Latin-Kanji Host Mixed.
                        ibm-939 { IBM* }
                        ibm-931 { IBM }     # Yes this is correct
                        ibm-5035 { IBM }    # Yes this is also correct
                        IBM939 { JAVA }
                        cp939 { JAVA* }
                        939 { JAVA }
ibm-1025_P100-1995 { UTR22* }   ibm-1025 { IBM* JAVA } cp1025 { JAVA* } 1025 { JAVA }   # EBCDIC Cyrillic
ibm-1026_P100-1995 { UTR22* }   ibm-1026 { IBM* } IBM1026 { IANA* JAVA } CP1026 { IANA JAVA* } csIBM1026 { IANA } 1026 { JAVA } # EBCDIC Turkey 
ibm-1047_P100-1995 { UTR22* }   ibm-1047 { IBM* } IBM1047 { IANA* JAVA } cp1047 { JAVA* } 1047 { JAVA } # EBCDIC Open systems Latin1
ibm-1097_P100-1995 { UTR22* }   ibm-1097 { IBM* JAVA } cp1097 { JAVA* } 1097 { JAVA }   # EBCDIC Farsi
ibm-1112_P100-1995 { UTR22* }   ibm-1112 { IBM* JAVA } cp1112 { JAVA* } 1112 { JAVA }   # EBCDIC Baltic
ibm-1122_P100-1999 { UTR22* }   ibm-1122 { IBM* JAVA } cp1122 { JAVA* } 1122 { JAVA }   # EBCDIC Estonia 
ibm-1123_P100-1995 { UTR22* }   ibm-1123 { IBM* JAVA } cp1123 { JAVA* } 1123 { JAVA }   # EBCDIC Cyrillic Ukraine
ibm-1130_P100-1997 { UTR22* }   ibm-1130 { IBM* }       # EBCDIC Vietnamese
ibm-1132_P100-1998 { UTR22* }   ibm-1132 { IBM* }       # EBCDIC Lao
ibm-1137_P100-1999 { UTR22* }   ibm-1137 { IBM* }       # Devanagari EBCDIC (based on Unicode character set)
ibm-4517_P100-2005 { UTR22* }   ibm-4517 { IBM* }       # EBCDIC Arabic. Update of ibm-421

# with Euro
ibm-1140_P100-1997 { UTR22* }   ibm-1140 { IBM* } IBM01140 { IANA* JAVA } CCSID01140 { IANA JAVA } CP01140 { IANA JAVA } cp1140 { JAVA* } ebcdic-us-37+euro { IANA } # EBCDIC US
ibm-1141_P100-1997 { UTR22* }   ibm-1141 { IBM* } IBM01141 { IANA* JAVA } CCSID01141 { IANA JAVA } CP01141 { IANA JAVA } cp1141 { JAVA* } ebcdic-de-273+euro { IANA } # EBCDIC Germanay, Austria
ibm-1142_P100-1997 { UTR22* }   ibm-1142 { IBM* } IBM01142 { IANA* JAVA } CCSID01142 { IANA JAVA } CP01142 { IANA JAVA } cp1142 { JAVA* } ebcdic-dk-277+euro { IANA } ebcdic-no-277+euro { IANA } # EBCDIC Denmark
ibm-1143_P100-1997 { UTR22* }   ibm-1143 { IBM* } IBM01143 { IANA* JAVA } CCSID01143 { IANA JAVA } CP01143 { IANA JAVA } cp1143 { JAVA* } ebcdic-fi-278+euro { IANA } ebcdic-se-278+euro { IANA } # EBCDIC Sweden
ibm-1144_P100-1997 { UTR22* }   ibm-1144 { IBM* } IBM01144 { IANA* JAVA } CCSID01144 { IANA JAVA } CP01144 { IANA JAVA } cp1144 { JAVA* } ebcdic-it-280+euro { IANA } # EBCDIC Italy
ibm-1145_P100-1997 { UTR22* }   ibm-1145 { IBM* } IBM01145 { IANA* JAVA } CCSID01145 { IANA JAVA } CP01145 { IANA JAVA } cp1145 { JAVA* } ebcdic-es-284+euro { IANA } # EBCDIC Spain
ibm-1146_P100-1997 { UTR22* }   ibm-1146 { IBM* } IBM01146 { IANA* JAVA } CCSID01146 { IANA JAVA } CP01146 { IANA JAVA } cp1146 { JAVA* } ebcdic-gb-285+euro { IANA } # EBCDIC UK Ireland
ibm-1147_P100-1997 { UTR22* }   ibm-1147 { IBM* } IBM01147 { IANA* JAVA } CCSID01147 { IANA JAVA } CP01147 { IANA JAVA } cp1147 { JAVA* } ebcdic-fr-297+euro { IANA } # EBCDIC France
ibm-1148_P100-1997 { UTR22* }   ibm-1148 { IBM* } IBM01148 { IANA* JAVA } CCSID01148 { IANA JAVA } CP01148 { IANA JAVA } cp1148 { JAVA* } ebcdic-international-500+euro { IANA } # EBCDIC International Latin1
ibm-1149_P100-1997 { UTR22* }   ibm-1149 { IBM* } IBM01149 { IANA* JAVA } CCSID01149 { IANA JAVA } CP01149 { IANA JAVA } cp1149 { JAVA* } ebcdic-is-871+euro { IANA } # EBCDIC Iceland
ibm-1153_P100-1999 { UTR22* }   ibm-1153 { IBM* }                   # EBCDIC latin 2
ibm-1154_P100-1999 { UTR22* }   ibm-1154 { IBM* }                   # EBCDIC Cyrillic Multilingual
ibm-1155_P100-1999 { UTR22* }   ibm-1155 { IBM* }                   # EBCDIC Turkey
ibm-1156_P100-1999 { UTR22* }   ibm-1156 { IBM* }                   # EBCDIC Baltic Multilingual
ibm-1157_P100-1999 { UTR22* }   ibm-1157 { IBM* }                   # EBCDIC Estonia
ibm-1158_P100-1999 { UTR22* }   ibm-1158 { IBM* }                   # EBCDIC Cyrillic Ukraine
ibm-1160_P100-1999 { UTR22* }   ibm-1160 { IBM* }                   # EBCDIC Thailand
ibm-1164_P100-1999 { UTR22* }   ibm-1164 { IBM* }                   # EBCDIC Viet Nam
ibm-1364_P110-2007 { UTR22* }   ibm-1364 { IBM* }                   # Korean Host Mixed
ibm-1371_P100-1999 { UTR22* }   ibm-1371 { IBM* }                   # Taiwan EBCDIC MIXED (Euro update of ibm-937)
ibm-1388_P103-2001 { UTR22* }   ibm-1388 { IBM* } ibm-9580 { IBM }  # S-Ch DBCS-Host Data GBK EBCDIC_STATEFUL. Yes ibm-9580 is an alias.
ibm-1390_P110-2003 { UTR22* }   ibm-1390 { IBM* }                   # Japan EBCDIC MIXED (JIS X 0213)
ibm-1399_P110-2003 { UTR22* }   ibm-1399 { IBM* }                   # Host MBCS (Latin-Kanji) (JIS X 0213)
ibm-5123_P100-1999 { UTR22* }   ibm-5123 { IBM* }                   # Host Roman Jis. Euro update of ibm-1027. SBCS portion of ibm-1390.
ibm-8482_P100-1999 { UTR22* }   ibm-8482 { IBM* }                   # host SBCS (Katakana). Euro update of ibm-290. SBCS portion of ibm-1399.
ibm-16684_P110-2003 { UTR22* }  ibm-16684 { IBM* }                  # DBCS Jis + Roman Jis Host. This is the DBCS portion of ibm-1390 and ibm-1399 (JIS X 0213)
ibm-4899_P100-1998 { UTR22* }   ibm-4899 { IBM* }                   # Old EBCDIC Hebrew. Update of ibm-803
ibm-4971_P100-1999 { UTR22* }   ibm-4971 { IBM* }                   # EBCDIC Greek. Update of ibm-875 and superceded by ibm-9067
ibm-9067_X100-2005 { UTR22* }   ibm-9067 { IBM* }                   # EBCDIC Greek. Update of ibm-875 and ibm-4971
ibm-12712_P100-1998 { UTR22* }  ibm-12712 { IBM* } ebcdic-he        # EBCDIC Hebrew (new sheqel, control charaters update). Update of ibm-424
ibm-16804_X110-1999 { UTR22* }  ibm-16804 { IBM* } ebcdic-ar        # EBCDIC Arabic. Update of ibm-420


# EBCDIC codepages for S/390, with LF and NL codes swapped
# Starting with ICU 2.4, the swapping is done by modifying the
# normal tables at runtime instead of at build time.
# Append UCNV_SWAP_LFNL_OPTION_STRING to the "ibm-CCSID" name to select this.
#
# Example: "ibm-1047,swaplfnl" or "ibm-1047" UCNV_SWAP_LFNL_OPTION_STRING
#
# This avoids the duplication of all EBCDIC SBCS and mixed-SBCS/DBCS
# mapping files.

# Some examples below for declaring old-style, obsolete aliases with the "-s390"
# suffix to map to the new-style, recommended names with the option added.
# These are listed here for backward compatibility.
# Do not use these; instead use the normal converter name with the option
# added as recommended above.

# Note: It is not possible to define an alias (non-initial name in a line here)
# that itself contains a converter option like this one for swapping LF<->NL.
# Such names would never be found because ucnv_open() will first parse and strip
# options before looking up a name in this table.
# ucnv_open() then parses the lookup result (the canonical name on the left
# in lines here) as well.

# This also means that it is not necessary to add anything to convrtrs.txt
# for converter names like "ibm-1026,swaplfnl" to work -
# they are already covered by the normal option parsing together with the
# regular, option-less alias elsewhere in this file.

ibm-37_P100-1995,swaplfnl     ibm-37-s390 # ibm037-s390 also matches ibm-37-s390
ibm-1047_P100-1995,swaplfnl   ibm-1047-s390
ibm-1140_P100-1997,swaplfnl   ibm-1140-s390
ibm-1142_P100-1997,swaplfnl   ibm-1142-s390
ibm-1143_P100-1997,swaplfnl   ibm-1143-s390
ibm-1144_P100-1997,swaplfnl   ibm-1144-s390
ibm-1145_P100-1997,swaplfnl   ibm-1145-s390
ibm-1146_P100-1997,swaplfnl   ibm-1146-s390
ibm-1147_P100-1997,swaplfnl   ibm-1147-s390
ibm-1148_P100-1997,swaplfnl   ibm-1148-s390
ibm-1149_P100-1997,swaplfnl   ibm-1149-s390
ibm-1153_P100-1999,swaplfnl   ibm-1153-s390
ibm-12712_P100-1998,swaplfnl  ibm-12712-s390
ibm-16804_X110-1999,swaplfnl  ibm-16804-s390

# This is a special version of ibm-1140 that the XML4C (Xerces) parser team
# requested in 2000.
# It maps both EBCDIC LF and NL controls to Unicode LF U+000A.

ebcdic-xml-us

# These were removed due to age, and they are rarely used.

# ibm-274   IBM274 { IANA* } cp274 csIBM274 ebcdic-be
# ibm-870   IBM870 { IANA* } ebcdic-cp-roece ebcdic-cp-yu csIBM870 cp870 870

#ibm-942_P120-1999 { UTR22* }
#                        #ibm-942 { IBM* }
#                        ibm-942_VASCII_VSUB_VPUA
#                        #ibm-932 { IBM }
#                        ibm-932_VASCII_VSUB_VPUA   # Old s_jis
#ibm-859 { IBM* }        cp859 { MIME* }     # PC Latin 9 (w/ euro update)
#ibm-5104_X110-1999 { UTR22* }   ibm-5104 { IBM* } cp1008    # 8-bit Arabic (w/ euro update)
#ibm-9238 { IBM* }               cp1046                      # PC Arabic Extended (w/ euro update)
#ibm-17248_X110-1999 { UTR22* }  ibm-17248 { IBM* }          # PC Arabic (w/ euro update) Updated version of ibm-864

#ibm-941                 jis-208 jisx-208    # Pure DBCS jisx-208 # ibm-941 is not JISX 208 code page
#ibm-955                 jis-208 jisx-208    # Pure DBCS jisx-208

#ibm-1159_P100-1999 { UTR22* }   ibm-1159 { IBM* }   # SBCS T-Ch Host. Euro update of ibm-28709. This is used in combination with another CCSID mapping.
#ibm-9027_P100-1999 { UTR22* }   ibm-9027 { IBM* }   # DBCS T-Ch Host. Euro update of ibm-835. DBCS portion of ibm-1371.

#ibm-1381_P110-1999 { UTR22* }   ibm-1381 { IBM* JAVA } cp1381 { JAVA* } 1381 { JAVA }   # S-Ch PC Data mixed (IBM GB) 

