# ******************************************************************************
# *
# *   Copyright (C) 1995-2009, 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 }
                                UnicodeBigUnmarked { JAVA } # java.io name
                                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-29872 { IBM } # Unicode 5.0, UTF-16 BE with IBM PUA
                                ibm-29873 { IBM } # Unicode 5.0, 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 }
                                UnicodeLittleUnmarked { JAVA } # java.io name
                                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
                                ibm-29874 { IBM } # Unicode 5.0, UTF-16 LE with IBM PUA
                                ibm-29875 { IBM } # Unicode 5.0, 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
                                ibm-9424 { IBM }  # Unicode 4.1, UTF-32 BE with IBM PUA
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


# Java-specific, non-Unicode-standard UTF-16 variants.
# These are in the Java "Basic Encoding Set (contained in lib/rt.jar)".
# See the "Supported Encodings" at
# http://java.sun.com/javase/6/docs/technotes/guides/intl/encoding.doc.html
# or a newer version of this document.
#
# Aliases marked with { JAVA* } are canonical names for java.io and java.lang APIs.
# Aliases marked with { JAVA } are canonical names for the java.nio API.
#
# "BOM" means the Unicode Byte Order Mark, which is the encoding-scheme-specific
# byte sequence for U+FEFF.
# "Reverse BOM" means the BOM for the sibling encoding scheme with the
# opposite endianness. (LE<->BE)

# "Sixteen-bit Unicode (or UCS) Transformation Format, big-endian byte order,
# with byte-order mark"
#
# From Unicode: Writes BOM.
# To Unicode: Detects and consumes BOM. 
#   If there is a "reverse BOM", Java throws
#   MalformedInputException: Incorrect byte-order mark.
#   In this case, ICU4C sets a U_ILLEGAL_ESCAPE_SEQUENCE UErrorCode value
#   and a UCNV_ILLEGAL UConverterCallbackReason.
UTF-16BE,version=1		UnicodeBig { JAVA* }

# "Sixteen-bit Unicode (or UCS) Transformation Format, little-endian byte order,
# with byte-order mark"
#
# From Unicode: Writes BOM.
# To Unicode: Detects and consumes BOM. 
#   If there is a "reverse BOM", Java throws
#   MalformedInputException: Incorrect byte-order mark.
#   In this case, ICU4C sets a U_ILLEGAL_ESCAPE_SEQUENCE UErrorCode value
#   and a UCNV_ILLEGAL UConverterCallbackReason.
UTF-16LE,version=1		UnicodeLittle { JAVA* }  x-UTF-16LE-BOM { JAVA }

# This one is not mentioned on the "Supported Encodings" page
# but is available in Java.
# In Java, this is called "Unicode" but we cannot give it that alias
# because the standard UTF-16 converter already has a "unicode" alias.
#
# From Unicode: Writes BOM.
# To Unicode: Detects and consumes BOM.
#   If there is no BOM, rather than defaulting to BE, Java throws
#   MalformedInputException: Missing byte-order mark.
#   In this case, ICU4C sets a U_ILLEGAL_ESCAPE_SEQUENCE UErrorCode value
#   and a UCNV_ILLEGAL UConverterCallbackReason.
# BEGIN Android-changed
UTF-16,version=1                JavaUnicode # alias made up to avoid java.nio.charset.IllegalCharsetNameException
# END Android-changed

# Note: ICU does not currently support Java-specific, non-Unicode-standard UTF-32 variants.
# Presumably, these behave analogously to the UTF-16 variants with similar names.
# UTF_32BE_BOM  x-UTF-32BE-BOM
# UTF_32LE_BOM  x-UTF-32LE-BOM

# End of Java-specific, non-Unicode-standard UTF variants.


# 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* } GB18030 { MIME* }

# 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* }
                        sun_eu_greek # For Solaris

# 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.
                        hebrew8 # Reflect HP-UX code page update

# 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
                        turkish8    # Reflect HP-UX codepage update 8/1/2008
                        turkish     # Reflect HP-UX codepage update 8/1/2008

# 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
                        # BEGIN android-removed
                        # EUC-JP { IANA MIME* WINDOWS }
                        # Extended_UNIX_Code_Packed_Format_for_Japanese { IANA* WINDOWS }
                        # csEUCPkdFmtJapanese { IANA WINDOWS }
                        # END android-removed
                        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* }
                        # BEGIN android-removed
                        # EUC-JP { JAVA* } # Matches more closely with ibm-1350
                        # Extended_UNIX_Code_Packed_Format_for_Japanese { JAVA }
                        # csEUCPkdFmtJapanese { JAVA }
                        # END android-removed
                        # BEGIN android-added
                        EUC-JP { IANA MIME* JAVA* } # Matches more closely with ibm-1350
                        Extended_UNIX_Code_Packed_Format_for_Japanese { IANA* JAVA }
                        csEUCPkdFmtJapanese { IANA JAVA }
                        # END android-added
                        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* }
                        # BEGIN android-removed
                        # windows-950 # Alternate mapping. Leave untagged. This is the IBM interpretation of a Windows codepage.
                        # END android-removed
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 }
                        # BEGIN android-added
                        chinese { IANA }
                        iso-ir-58 { IANA }
                        gb2312-1980
                        GB2312 { IANA }
                        EUC-CN
                        csGB2312 { IANA }
                        GB_2312-80 { IANA }
                        csISO58GB231280 { IANA }
                        # END android-added


# 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 }
                        # BEGIN android-removed
                        # GB2312 { IANA* MIME* }
                        # csGB2312 { IANA }
                        # END android-removed
                        cp1383 { JAVA* }
                        1383 { JAVA }
                        # BEGIN android-removed
                        # EUC-CN  # According to other platforms, windows-20936 looks more like euc-cn. x-euc-cn is also a MIME name
                        # END android-removed
                        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.
                        # BEGIN android-removed
                        # GB_2312-80 { IANA* }    # Windows maps this alias incorrectly
                        # chinese { IANA }
                        # iso-ir-58 { IANA }
                        # csISO58GB231280 { IANA }
                        # gb2312-1980
                        # END android-removed
                        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 }
            # BEGIN android-removed
                        # 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
            # END android-removed
                        ibm-eucKR { JAVA }
            # BEGIN android-removed
                        # KSC_5601 { JAVA } # Needed by iso-2022
                        # 5601 { JAVA }
            # END android-removed
                        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
                        # BEGIN android-removed
                        # KS_C_5601-1987 { IANA* }
                        # KS_C_5601-1989 { IANA }
                        # KSC_5601 { IANA }
                        # csKSC56011987 { IANA }
                        # korean { IANA }
                        # iso-ir-149 { IANA }
                        # END android-removed
                        cp1363 { MIME* }
                        # BEGIN android-removed
                        # 5601
                        # END android-removed
                        ksc
                        # BEGIN android-removed
                        # windows-949 # Alternate mapping. Leave untagged. This is the IBM interpretation of a Windows codepage.
                        # END android-removed
                        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* }
                        # BEGIN android-removed
                        # windows-949 { JAVA* WINDOWS* }
                        # KS_C_5601-1987 { WINDOWS }
                        # KS_C_5601-1989 { WINDOWS }
                        # KSC_5601 { MIME WINDOWS } # Needed by iso-2022
                        # csKSC56011987 { WINDOWS }
                        # korean { WINDOWS }
                        # iso-ir-149 { WINDOWS }
                        # END android-removed
                        # BEGIN android-added
                        windows-949 { JAVA* WINDOWS }
                        EUC-KR { IANA* MIME* WINDOWS }
                        KS_C_5601-1987 { WINDOWS* IANA }
                        KS_C_5601-1989 { WINDOWS IANA }
                        KSC_5601 { IANA WINDOWS } # Needed by iso-2022
                        csKSC56011987 { IANA WINDOWS }
                        korean { IANA WINDOWS }
                        iso-ir-149 { IANA WINDOWS }
                        csEUCKR { IANA WINDOWS }
                        5601
                        # END android-added
                        ms949 { JAVA }

windows-874-2000 { UTR22* }   # Thai (w/ euro update)
                        # BEGIN android-changed
                        TIS-620 { IANA* WINDOWS JAVA }
                        windows-874 { JAVA WINDOWS* }
                        # END android-changed
                        MS874 { JAVA* }
                        # iso-8859-11 { WINDOWS } # iso-8859-11 is similar to TIS-620. ibm-13162 is a closer match.
                        # BEGIN android-added
                        ibm-874 { IBM* JAVA }
                        ibm-9066 { IBM }    # Yes ibm-874 == ibm-9066. ibm-1161 has the euro update.
                        cp874 { JAVA }
                        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
                        # END android-added

ibm-874_P100-1995 { UTR22* }    # Thai PC (w/o euro update).
                        # BEGIN android-removed
                        # 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
                        # END android-removed
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* MIME* 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 } windows-855 { WINDOWS* } # PC cyrillic (w/o euro update)
ibm-856_P100-1995 { UTR22* }    ibm-856 { IBM* } IBM856 { JAVA } cp856 { JAVA* } 856 { JAVA }  # PC Hebrew implicit order
ibm-857_P100-1995 { UTR22* }    ibm-857 { IBM* } IBM857 { IANA* MIME* 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* MIME* JAVA } CCSID00858 { IANA JAVA } CP00858 { IANA JAVA } PC-Multilingual-850+euro { IANA } cp858 { MIME JAVA* } windows-858 { WINDOWS* } # PC latin1 with Euro
ibm-860_P100-1995 { UTR22* }    ibm-860 { IBM* } IBM860 { IANA* MIME* JAVA } cp860 { IANA MIME JAVA* } 860 { IANA JAVA } csIBM860 { IANA JAVA }    # PC Portugal
ibm-861_P100-1995 { UTR22* }    ibm-861 { IBM* } IBM861 { IANA* MIME* 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* MIME* 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* MIME* JAVA } cp863 { IANA MIME JAVA* } 863 { IANA JAVA } csIBM863 { IANA JAVA }    # PC Canadian French
# BEGIN Android-changed
ibm-864_X110-1999 { UTR22* }    ibm-864 { IBM* } IBM864 { IANA* JAVA } cp864 { IANA MIME* JAVA* } csIBM864 { IANA JAVA } # PC Arabic (w/o euro update)
# END Android-changed
ibm-865_P100-1995 { UTR22* }    ibm-865 { IBM* } IBM865 { IANA* MIME* JAVA } cp865 { IANA MIME JAVA* } 865 { IANA JAVA } csIBM865 { IANA JAVA }    # PC Nordic
ibm-866_P100-1995 { UTR22* }    ibm-866 { IBM* } IBM866 { IANA* MIME* 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* MIME* JAVA } CP868 { IANA MIME JAVA* } 868 { JAVA } csIBM868 { IANA } cp-ar { IANA }          # PC Urdu
ibm-869_P100-1995 { UTR22* }    ibm-869 { IBM* } IBM869 { IANA* MIME* 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 { JAVA* } 922 { JAVA } # PC Estonian (w/o euro update)
ibm-1168_P100-2002 { UTR22* }   ibm-1168 { IBM* } KOI8-U { IANA* WINDOWS } windows-21866 { WINDOWS* } # Ukrainian KOI8. koi8-ru != KOI8-U and Microsoft is wrong for aliasing them as the same.
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* } macroman { JAVA } x-macroman { JAVA* } # 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 maccentraleurope  # 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 { MIME* } 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* }

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.
# Yes ibm-20780 is the same as ibm-16684
ibm-16684_P110-2003 { UTR22* }  ibm-16684 { IBM* } ibm-20780 { 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 are not installed by default. They are rarely used.
# Many of them can be added through the online ICU Data Library Customization tool

gsm-03.38-2000 { UTR22* }   GSM0338 # GSM0338 alias is from Perl
ibm-1004_P100-1995 { UTR22* }   ibm-1004 { IBM* }
ibm-1008_P100-1995 { UTR22* }   ibm-1008 { IBM* } # cp1008, 8-bit Arabic (w/o euro update)
ibm-1009_P100-1995 { UTR22* }   ibm-1009 { IBM* }
ibm-1010_P100-1995 { UTR22* }   ibm-1010 { IBM* } NF_Z_62-010 { IANA* } iso-ir-69 { IANA } ISO646-FR { IANA } fr { IANA } csISO69French { IANA }
ibm-1011_P100-1995 { UTR22* }   ibm-1011 { IBM* } DIN_66003 { IANA* } iso-ir-21 { IANA } de { IANA } ISO646-DE { IANA } csISO21German { IANA }
ibm-1012_P100-1995 { UTR22* }   ibm-1012 { IBM* } IT { IANA* } iso-ir-15 { IANA } ISO646-IT { IANA } csISO15Italian { IANA }
ibm-1013_P100-1995 { UTR22* }   ibm-1013 { IBM* } BS_4730 { IANA* } iso-ir-4 { IANA } ISO646-GB { IANA } gb { IANA } uk { IANA } csISO4UnitedKingdom { IANA }
ibm-1014_P100-1995 { UTR22* }   ibm-1014 { IBM* } ES2 { IANA* } iso-ir-85 { IANA } ISO646-ES2 { IANA } csISO85Spanish2 { IANA }
ibm-1015_P100-1995 { UTR22* }   ibm-1015 { IBM* } PT2 { IANA* } iso-ir-84 { IANA } ISO646-PT2 { IANA } csISO84Portuguese2 { IANA }
ibm-1016_P100-1995 { UTR22* }   ibm-1016 { IBM* } NS_4551-1 { IANA* } iso-ir-60 { IANA } ISO646-NO { IANA } no { IANA } csISO60DanishNorwegian { IANA } csISO60Norwegian1 { IANA }
ibm-1017_P100-1995 { UTR22* }   ibm-1017 { IBM* }
ibm-1018_P100-1995 { UTR22* }   ibm-1018 { IBM* } SEN_850200_B { IANA* } iso-ir-10 { IANA } FI { IANA } ISO646-FI { IANA } ISO646-SE { IANA } se { IANA } csISO10Swedish { IANA }
ibm-1019_P100-1995 { UTR22* }   ibm-1019 { IBM* }
ibm-1020_P100-2003 { UTR22* }   ibm-1020 { IBM* } CSA_Z243.4-1985-1 { IANA* } iso-ir-121 { IANA } ISO646-CA { IANA } csa7-1 { IANA } ca { IANA } csISO121Canadian1 { IANA }
ibm-1021_P100-2003 { UTR22* }   ibm-1021 { IBM* }
ibm-1023_P100-2003 { UTR22* }   ibm-1023 { IBM* } ES { IANA* } iso-ir-17 { IANA } ISO646-ES { IANA } csISO17Spanish { IANA }
ibm-1046_X110-1999 { UTR22* }   ibm-1046 { IBM* } # Arabic
ibm-1100_P100-2003 { UTR22* }   ibm-1100 { IBM* } DEC-MCS { IANA* } dec { IANA } csDECMCS { IANA }
ibm-1101_P100-2003 { UTR22* }   ibm-1101 { IBM* }
ibm-1102_P100-2003 { UTR22* }   ibm-1102 { IBM* }
ibm-1103_P100-2003 { UTR22* }   ibm-1103 { IBM* }
ibm-1104_P100-2003 { UTR22* }   ibm-1104 { IBM* } NF_Z_62-010_1973 iso-ir-25 { IANA* } ISO646-FR1 { IANA } csISO25French { IANA } # NF_Z_62-010_(1973) is the real IANA alias, but () aren't invariant characters.
ibm-1105_P100-2003 { UTR22* }   ibm-1105 { IBM* }
ibm-1106_P100-2003 { UTR22* }   ibm-1106 { IBM* }
ibm-1107_P100-2003 { UTR22* }   ibm-1107 { IBM* } DS_2089 { IANA* } ISO646-DK { IANA } dk { IANA } csISO646Danish { IANA }
ibm-1127_P100-2004 { UTR22* }   ibm-1127 { IBM* }
ibm-1161_P100-1999 { UTR22* }   ibm-1161 { IBM* } # Thai (Euro update of ibm-1129)
ibm-1163_P100-1999 { UTR22* }   ibm-1163 { IBM* } # Vietnamese
ibm-1165_P101-2000 { UTR22* }   ibm-1165 { IBM* } # Vietnamese (EBCDIC)
ibm-1166_P100-2002 { UTR22* }   ibm-1166 { IBM* } # Cyrillic for Kazakhstan
ibm-1167_P100-2002 { UTR22* }   ibm-1167 { IBM* } KOI8-RU
ibm-1174_X100-2007 { UTR22* }   ibm-1174 { IBM* } KZ-1048 { IANA* } STRK1048-2002 { IANA } RK1048 { IANA } csKZ1048 { IANA }
ibm-1277_P100-1995 { UTR22* }   ibm-1277 { IBM* } # Adobe (Postscript) Latin-1
ibm-13125_P100-1997 { UTR22* }  ibm-13125 { IBM* } # S-Ch (DBCS subset of ibm-4933, ibm-1388)
ibm-13140_P101-2000 { UTR22* }  ibm-13140 { IBM* }
ibm-13218_P100-1996 { UTR22* }  ibm-13218 { IBM* } # Japanese (EBCDIC update of ibm-930)
ibm-1350_P110-1997 { UTR22* }   ibm-1350 { IBM* } # Japanese (EUC-JP variant)
ibm-1351_P110-1997 { UTR22* }   ibm-1351 { IBM* } # Japanese (DBCS subset of ibm-5039)
ibm-1362_P110-1999 { UTR22* }   ibm-1362 { IBM* } # Korean (DBCS subset of ibm-1363)
ibm-13676_P102-2001 { UTR22* }  ibm-13676 { IBM* } # Simplified Chinese (EBCDIC)
ibm-1380_P100-1995 { UTR22* }   ibm-1380 { IBM* } # Simplified Chinese (DBCS subset of ibm-1381)
ibm-1381_P110-1999 { UTR22* }   ibm-1381 { IBM* JAVA } cp1381 { JAVA* } 1381 { JAVA }   # Simplified Chinese PC Data mixed (IBM GB) 
ibm-1382_P100-1995 { UTR22* }   ibm-1382 { IBM* } # Simplified Chinese (DBCS subset of ibm-1383)
ibm-17221_P100-2001 { UTR22* }  ibm-17221 { IBM* } # Simplified Chinese (EBCDIC)
ibm-17248_X110-1999 { UTR22* }  ibm-17248 { IBM* } # PC Arabic (w/ euro update) Updated version of ibm-864
ibm-21344_P101-2000 { UTR22* }  ibm-21344 { IBM* } # PC Arabic. Updated version of ibm-864
ibm-21427_P100-1999 { UTR22* }  ibm-21427 { IBM* } # Traditional Chinese (DBCS subset of ibm-1370)
ibm-256_P100-1995 { UTR22* }    ibm-256 { IBM* } # Latin 1 EBCDIC
ibm-259_P100-1995 { UTR22* }    ibm-259 { IBM* } IBM-Symbols { IANA* } csIBMSymbols { IANA }
ibm-274_P100-2000 { UTR22* }    ibm-274 { IBM* } IBM274 { IANA* } EBCDIC-BE { IANA } CP274 { IANA } csIBM274 { IANA }
ibm-275_P100-1995 { UTR22* }    ibm-275 { IBM* } IBM275 { IANA* } EBCDIC-BR { IANA } cp275 { IANA } csIBM275 { IANA }
ibm-286_P100-2003 { UTR22* }    ibm-286 { IBM* } EBCDIC-AT-DE-A { IANA* } csEBCDICATDEA { IANA }
ibm-293_P100-1995 { UTR22* }    ibm-293 { IBM* } # APL EBCDIC (APL: A Programming Language)
ibm-300_P120-2006 { UTR22* }    ibm-300 { IBM* } # Japanese (DBCS subset of ibm-930 and ibm-939)
ibm-301_P110-1997 { UTR22* }    ibm-301 { IBM* } # Japanese (DBCS subset of ibm-943)
ibm-33058_P100-2000 { UTR22* }  ibm-33058 { IBM* } # SBCS (Katakana)
ibm-425_P101-2000 { UTR22* }    ibm-425 { IBM* } # Arabic (EBCDIC)
ibm-4930_P110-1999 { UTR22* }   ibm-4930 { IBM* } # Korean (DBCS subset of ibm-1364)
ibm-4933_P100-2002 { UTR22* }   ibm-4933 { IBM* } # S-Ch (DBCS subset of ibm-1388)
ibm-4948_P100-1995 { UTR22* }   ibm-4948 { IBM* }
ibm-4951_P100-1995 { UTR22* }   ibm-4951 { IBM* }
ibm-4952_P100-1995 { UTR22* }   ibm-4952 { IBM* }
ibm-4960_P100-1995 { UTR22* }   ibm-4960 { IBM* }
ibm-5039_P11A-1998 { UTR22* }   ibm-5039 { IBM* } # Japanese (HP Shift-JIS variant)
ibm-5048_P100-1995 { UTR22* }   ibm-5048 { IBM* } # Japanese (DBCS subset of ibm-1350, JIS X208-1990)
ibm-5049_P100-1995 { UTR22* }   ibm-5049 { IBM* } # Japanese (DBCS subset of ibm-1350, JIS X212)
ibm-5067_P100-1995 { UTR22* }   ibm-5067 { IBM* } # Korean (DBCS subset of ibm-21450)
ibm-5104_X110-1999 { UTR22* }   ibm-5104 { IBM* } # cp1008, 8-bit Arabic (w/ euro update)
ibm-806_P100-1998 { UTR22* }    ibm-806 { IBM* } # Hindi (ISCII variant)
ibm-808_P100-1999 { UTR22* }    ibm-808 { IBM* } # Cyrillic
ibm-834_P100-1995 { UTR22* }    ibm-834 { IBM* } # Korean (DBCS subset of ibm-933)
ibm-835_P100-1995 { UTR22* }    ibm-835 { IBM* } # Traditional Chinese (DBCS subset of ibm-5033)
ibm-837_P100-1995 { UTR22* }    ibm-837 { IBM* } # Simplified Chinese (DBCS subset of ibm-5031)
ibm-848_P100-1999 { UTR22* }    ibm-848 { IBM* } # Cyrillic (euro update of ibm-1125)
ibm-849_P100-1999 { UTR22* }    ibm-849 { IBM* } # Cyrillic Belarus (euro update of ibm-1131)
ibm-859_P100-1999 { UTR22* }    ibm-859 { IBM* } # PC Latin 9 (w/ euro update)
ibm-8612_P100-1995 { UTR22* }   ibm-8612 { IBM* } # Arabic (EBCDIC update of ibm-420)
ibm-872_P100-1999 { UTR22* }    ibm-872 { IBM* } # Cyrillic (Euro update of ibm-855)
ibm-880_P100-1995 { UTR22* }    ibm-880 { IBM* } IBM880 { IANA* } cp880 { IANA } EBCDIC-Cyrillic { IANA } csIBM880 { IANA } windows-20880 { WINDOWS* }
ibm-896_P100-1995 { UTR22* }    ibm-896 { IBM* } # SBCS Katakana
ibm-897_P100-1995 { UTR22* }    ibm-897 { IBM* } JIS_X0201 { IANA* } X0201 { IANA } csHalfWidthKatakana { IANA }
ibm-9027_P100-1999 { UTR22* }   ibm-9027 { IBM* } # DBCS T-Ch Host. Euro update of ibm-835. DBCS portion of ibm-1371.
ibm-9048_P100-1998 { UTR22* }   ibm-9048 { IBM* } # Hebrew (Euro and Sequel update of ibm-856)
ibm-905_P100-1995 { UTR22* }    ibm-905 { IBM* } IBM905 { IANA* } CP905 { IANA } ebcdic-cp-tr { IANA } csIBM905 { IANA } windows-20905 { WINDOWS* }
ibm-9056_P100-1995 { UTR22* }   ibm-9056 { IBM* } # Arabic
ibm-9061_P100-1999 { UTR22* }   ibm-9061 { IBM* } # Greek (w/ euro update)
ibm-9145_P110-1997 { UTR22* }   ibm-9145 { IBM* } # Japanese (DBCS subset of ibm-5050)
ibm-9238_X110-1999 { UTR22* }   ibm-9238 { IBM* } # cp1046, PC Arabic Extended (w/ euro update)
ibm-924_P100-1998 { UTR22* }    ibm-924 { IBM* } IBM00924 { IANA* } CCSID00924 { IANA } CP00924 { IANA } ebcdic-Latin9--euro { IANA }
ibm-926_P100-2000 { UTR22* }    ibm-926 { IBM* } # Korean (DBCS subset of ibm-944)
ibm-927_P100-1995 { UTR22* }    ibm-927 { IBM* } # Traditional Chinese (DBCS subset of ibm-948)
ibm-928_P100-1995 { UTR22* }    ibm-928 { IBM* } # Simplified Chinese (DBCS subset of ibm-936)
ibm-941_P13A-2001 { UTR22* }    ibm-941 { IBM* } # DBCS portion of ibm-943
ibm-944_P100-1995 { UTR22* }    ibm-944 { IBM* } # Korean
ibm-946_P100-1995 { UTR22* }    ibm-946 { IBM* } # Simplified Chinese
ibm-947_P100-1995 { UTR22* }    ibm-947 { IBM* } # Traditional Chinese (DBCS subset of ibm-950)
ibm-948_P110-1999 { UTR22* }    ibm-948 { IBM* } # Traditional Chinese
ibm-951_P100-1995 { UTR22* }    ibm-951 { IBM* } # Korean (DBCS subset of ibm-949)
ibm-952_P110-1997 { UTR22* }    ibm-952 { IBM* } # Pure DBCS, Japanese EUC, G1 - JIS X208-1990
ibm-953_P100-2000 { UTR22* }    ibm-953 { IBM* } # Pure DBCS, Japanese EUC, G3 - JIS X 0212-1990
ibm-955_P110-1997 { UTR22* }    ibm-955 { IBM* } # Pure DBCS, Japanese EUC, G0 - JIS X208-1978
ibm-9577_P100-2001 { UTR22* }   ibm-9577 { IBM* } ibm-1385 { IBM } # ibm-9577 and ibm-1385 are identical DBCS tables.
iso-8859_16-2001 { UTR22* }     ISO-8859-16 { IANA* } iso-ir-226 { IANA } ISO_8859-16:2001 { IANA } latin10 { IANA } l10 { IANA }
# BEGIN android-added
docomo-shift_jis-2007 { UTR22* } docomo-emoji # DoCoMo specific Shift-JIS
kddi-shift_jis-2007 { UTR22* } kddi-emoji # KDDI specific Shift-JIS
softbank-shift_jis-2007 { UTR22* } softbank-emoji # SoftBank specific Shift-JIS
# END android-added

# To be considered for listing at a later date for the data library customization tool
#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-960_P100-2000 { UTR22* }    ibm-960 { IBM* } # Pure DBCS, CNS11643 plane 1
#ibm-963_P100-1995 { UTR22* }    ibm-963 { IBM* } # Pure DBCS, CNS11643 plane 2 Traditional Chinese (DBCS subset of ibm-965)
