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

# IMPORTANT NOTE
#
# This file is not read directly by ICU. If you change it, you need to
# run gencnval, and eventually pkgdata to update the representation that
# ICU uses for aliases.

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

# This is an alias file used by the character set converter.
#
# Format:
#
#     Actual file name || Algorithm name     alias1 alias2 ...
#
# except for column 1 (file names) case insensitive. Names are separated
# by whitespace.
#
# 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().
#
# Here is a list of tags used in this file:
#
# IANA          The IANA charset name, as documented in RFC 1700.
# MIME          The MIME charset name, used for content type tagging. 
#
# 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 unique charset names, we are forced to
# make this table much more static than before.

# It means that a new encoding, 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 encoding 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).

# Especially, 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

# Name matching is case-insensitive. Also, dashes '-', underscores '_'
# and spaces ' ' are ignored in names (thus cs-iso-latin-1 and csisolatin1
# 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.



# This is the 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 general ordering is from specific and frequently used to more general
# or rarely used.
{   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 cp*
    JAVA            # Source: Sun JDK. Preferred name must be an exact match. 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* }           ibm-1208 { IBM* }
                                ibm-1209 { IBM }
                                ibm-5304 { IBM }
                                ibm-5305 { IBM }
                                cp1208
                                cp65001

# The ICU 2.2 UTF-16/32 converters detect and write a BOM.
UTF-16 { IANA* MIME* }          ISO-10646-UCS-2 { IANA } csUnicode ucs-2
UTF-16BE { IANA* MIME* }        UTF16_BigEndian
                                x-utf-16be
                                ibm-1200 { IBM* }
                                ibm-1201 { IBM }
                                ibm-5297 { IBM }
                                ibm-13488 { IBM }
                                ibm-17584 { IBM }
                                cp1201
UTF-16LE { IANA* MIME* }        UTF16_LittleEndian
                                x-utf-16le
                                ibm-1202 { IBM* }
                                ibm-13490 { IBM }
                                ibm-17586 { IBM }
                                cp1200

UTF-32 { IANA* MIME* }          ISO-10646-UCS-4 { IANA } csUCS4 ucs-4
UTF-32BE { IANA* }              UTF32_BigEndian ibm-1232 { IBM* } ibm-1233 { IBM }
UTF-32LE { IANA* }              UTF32_LittleEndian ibm-1234 { IBM* }

# 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* }           cp65000

# 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* }
BOCU-1 { IANA* } csBOCU-1 { IANA }

# 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* }

# 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 }
    LATIN_1     # Old ICU name
    ibm-819 { IBM* }    # This is not truely ibm-819 because it's missing the fallbacks.
    IBM819 { IANA }
    cp819 { IANA }
    latin1 { IANA }
    8859-1
    csISOLatin1 { IANA }
    iso-ir-100 { IANA }
    ISO_8859-1:1987 { IANA* }
    l1 { IANA }
    819
    # ANSI_X3.110-1983  # This is for a different IANA alias.  This isn't iso-8859-1.

US-ASCII { MIME* IANA }
    ASCII { JAVA* IANA }
    ascii-7 { JAVA }
    ANSI_X3.4-1968 { IANA* }
    ANSI_X3.4-1986 { IANA }
    ISO_646.irv:1991 { IANA }
    iso_646.irv:1983 { JAVA }
    ISO646-US { JAVA IANA }
    us { IANA }
    csASCII { IANA }
    646 { JAVA }
    iso-ir-6 { IANA }
    cp367 { IANA }
    # IBM367 { IANA } # Leave this on ibm-367 so it can have an IANA name
    # Java says "default" too, but that makes no sense.

# Partially algorithmic converters

ISO_2022                         ISO-2022 { MIME* } 2022 cp2022
ISO_2022,locale=ja,version=0     ISO-2022-JP { IANA* MIME* } csISO2022JP
ISO_2022,locale=ja,version=1     ISO-2022-JP-1 JIS JIS_Encoding { IANA* }
ISO_2022,locale=ja,version=2     ISO-2022-JP-2 { IANA* MIME* } csISO2022JP2
ISO_2022,locale=ja,version=3     JIS7 csJISEncoding
ISO_2022,locale=ja,version=4     JIS8
ISO_2022,locale=ko,version=0     ISO-2022-KR { IANA* MIME* } csISO2022KR
ISO_2022,locale=ko,version=1     ibm-25546 ibm-25546_P100 25546
ISO_2022,locale=zh,version=0     ISO-2022-CN { IANA* MIME* } # csISO2022CN
ISO_2022,locale=zh,version=1     ISO-2022-CN-EXT { IANA* MIME* }
HZ                               HZ-GB-2312 { IANA* MIME* }
ISCII,version=0         iscii-dev x-iscii-de
ISCII,version=1         iscii-bng x-iscii-as x-iscii-be
ISCII,version=2         iscii-gur x-iscii-pa
ISCII,version=3         iscii-guj x-iscii-gu
ISCII,version=4         iscii-ori x-iscii-or
ISCII,version=5         iscii-tml x-iscii-ta
ISCII,version=6         iscii-tlg x-iscii-te
ISCII,version=7         iscii-knd x-iscii-ka
ISCII,version=8         iscii-mlm x-iscii-ma

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

# Lotus specific
LMBCS-1                 lmbcs
LMBCS-2
LMBCS-3
LMBCS-4
LMBCS-5
LMBCS-6
LMBCS-8
LMBCS-11
LMBCS-16
LMBCS-17
LMBCS-18
LMBCS-19


# Table-based interchange codepages

ibm-367_P100-1995 { UTR22* }    ibm-367 { IBM* } IBM367 { IANA* }   # This is ASCII, but it has fallbacks

# Central Europe
ibm-912 { IBM* }        iso-8859-2 { MIME* IANA }
                        latin2 { IANA }
                        # ISO8859_2 { JAVA* } # This is really the default for Java and many others.
                        8859-2
                        csISOLatin2 { IANA }
                        iso-ir-101 { IANA }
                        ISO_8859-2:1987 { IANA* }
                        l2 { IANA }
                        cp912
                        912

# Maltese Esperanto
ibm-913 { IBM* }        iso-8859-3 { MIME* IANA }
                        latin3 { IANA }
                        8859-3
                        csISOLatin3 { IANA }
                        iso-ir-109
                        ISO_8859-3:1988 { IANA* }
                        l3 { IANA }
                        cp913
                        913

# Baltic
ibm-914 { IBM* }        iso-8859-4 { MIME* IANA }
                        latin4 { IANA }
                        8859-4
                        csISOLatin4 { IANA }
                        iso-ir-110 { IANA }
                        ISO_8859-4:1988 { IANA* }
                        l4 { IANA }
                        cp914
                        914

# Cyrillic
ibm-915 { IBM* }        iso-8859-5 { MIME* IANA }
                        cyrillic { IANA }
                        8859-5
                        csISOLatinCyrillic { IANA }
                        iso-ir-144 { IANA }
                        ISO_8859-5:1988 { IANA* }
                        cp915
                        915

# 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* }
                        iso-8859-6 { MIME* IANA }
                        arabic { IANA }
                        8859-6
                        csISOLatinArabic { IANA }
                        iso-ir-127 { IANA }
                        ISO_8859-6:1987 { IANA* }
                        ecma-114 { IANA }
                        asmo-708 { IANA }
                        ISO-8859-6-I # { IANA MIME } considers this alias different
                        ISO-8859-6-E # { IANA MIME } considers this alias different
                        cp1089
                        1089

# ISO Greek (w/ euro update)
ibm-4909_P100-1999 { UTR22* } ibm-4909 { IBM* }
# ISO Greek (w/o euro update)
ibm-813                 iso-8859-7 { MIME* IANA }
                        greek { IANA }
                        greek8 { IANA }
                        elot_928 { IANA }
                        ecma-118 { IANA }
                        8859-7
                        csISOLatinGreek { IANA }
                        iso-ir-126 { IANA }
                        ISO_8859-7:1987 { IANA* }
                        cp813
                        813

# 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
ibm-916 { IBM* }        iso-8859-8 { MIME* IANA }
                        hebrew { IANA }
                        8859-8
                        csISOLatinHebrew { IANA }
                        iso-ir-138 { IANA }
                        ISO_8859-8:1988 { IANA* }
                        ISO-8859-8-I # { IANA MIME } considers this alias different
                        ISO-8859-8-E # { IANA MIME } considers this alias different
                        cp916
                        916

# Turkish
ibm-920 { IBM* }        iso-8859-9 { MIME* IANA }
                        ECMA-128    # IANA doesn't have this alias 6/24/2002
                        latin5 { IANA }
                        8859-9
                        csISOLatin5 { IANA }
                        iso-ir-148 { IANA }
                        ISO_8859-9:1989 { IANA* }
                        l5 { IANA }
                        cp920
                        920

# PC Baltic (w/ euro update)
ibm-901 { IBM* }        cp921 { MIME* } 921
# iso-8859-13, PC Baltic (w/o euro update)
ibm-921 { IBM* }        iso-8859-13 { IANA* }

# Latin 9
ibm-923 { IBM* }        iso-8859-15 { IANA* MIME* } # IANA only has iso-8859-15 (6/24/2002)
                        # ISO8859_15 { JAVA* } # This is really the default for Java and many others.
                        8859-15
                        latin9
                        latin0
                        csisolatin0
                        csisolatin9
                        iso8859_15_fdis
                        cp923
                        923

# CJK encodings

ibm-942_P120-2000 { UTR22* }
                        ibm-942 { IBM* }
                        ibm-942_VASCII_VSUB_VPUA
                        ibm-932 { IBM }
                        ibm-932_VASCII_VSUB_VPUA   # Old s_jis
ibm-942_P12A-2000 { UTR22* }    # The normal mapping
                        ibm-942 # Leave untagged because this isn't the default
                        ibm-942_VSUB_VPUA
                        ibm-932 # Leave untagged because this isn't the default
                        shift_jis78
                        sjis78
                        ibm-932_VSUB_VPUA

ibm-943_P130-2000 { UTR22* }
                        ibm-943 { IBM* }
                        ibm-943_VASCII_VSUB_VPUA
                        Shift_JIS # Leave untagged because this isn't the default
                        # japanese. Unicode name is \u30b7\u30d5\u30c8\u7b26\u53f7\u5316\u8868\u73fe
ibm-943_P14A-2000 { UTR22* }
                        ibm-943 # Leave untagged because this isn't the default
                        ibm-943_VSUB_VPUA
                        Shift_JIS { IANA* MIME* }
                        sjis
                        cp943
                        cp932
                        pck     # Probably SOLARIS
                        MS_Kanji { IANA }
                        csShiftJIS { IANA }
                        windows-31j { IANA } # A further extension of Shift_JIS to include NEC special characters (Row 13)
                        csWindows31J { IANA } # A further extension of Shift_JIS to include NEC special characters (Row 13)
                        x-sjis  # Probably MIME
                        943
                        # Iana says that Windows-31J is an extension to csshiftjis ibm-932 
ibm-949_P110-2000 { UTR22* }
                        ibm-949 { IBM* }
                        ibm-949_VASCII_VSUB_VPUA

ibm-949_P11A-2000 { UTR22* }
                        ibm-949
                        ibm-949_VSUB_VPUA
                        KS_C_5601-1987 { IANA* }
                        iso-ir-149 { IANA }
                        KS_C_5601-1989 { IANA }
                        csKSC56011987 { IANA }
                        KSC_5601 { MIME* IANA }
                        ks_x_1001:1992
                        949
                        korean { IANA }
                        ksc5601_1992 # KSC-5601-1992
                        ksc5601_1987 # Needed by Java

ibm-1373_P100-2002 { UTR22* }
                        ibm-1373 { IBM* }
                        ibm-1373_VSUB_VPUA
                        Big5 { IANA* MIME* }
                        csBig5 { IANA }
                        x-big5
                        cp950
                        950 # Taiwan Big-5 (w/ euro update)
ibm-950_P110-1999 { UTR22* }
                        ibm-950 { IBM* }        # Taiwan Big-5 (w/o euro update)

ibm-1386_P100-2002  { UTR22* }
                        ibm-1386 { IBM* }
                        ibm-1386_VSUB_VPUA
                        GBK { IANA* }
                        CP936 { IANA }
                        windows-936 { IANA }
                        MS936 { IANA }
                        zh_cn # Chinese GBK removed

ibm-33722_P120-2000 { UTR22* }  # Japan EUC with \ <-> Yen mapping
                        ibm-33722 { IBM* }
                        ibm-33722_VASCII_VPUA
                        ibm-5050 { IBM }    # Yes this is correct
                        cp33722
                        33722
ibm-33722_P12A-2000 { UTR22* }
                        ibm-33722 # Leave untagged because this isn't the default
                        ibm-33722_VPUA
                        ibm-5050 # Leave untagged because this isn't the default, and yes this is correct
                        EUC-JP { IANA MIME* }
                        ibm-eucJP
                        eucjis
                        Extended_UNIX_Code_Packed_Format_for_Japanese { IANA* }
                        csEUCPkdFmtJapanese { IANA }
                        X-EUC-JP # Japan EUC. x-euc-jp is a MIME name
ibm-970_P110-2000 { UTR22* }
                        ibm-970 { IBM* }
                        ibm-970_VPUA
                        EUC-KR { IANA* MIME* }
                        ibm-eucKR
                        csEUCKR { IANA }  # Korean EUC. x-euc-kr is a MIME name
ibm-964_P110-2000 { UTR22* }
                        ibm-964 { IBM* }
                        ibm-964_VPUA
                        EUC-TW
                        ibm-eucTW
                        cns11643 # Taiwan EUC. x-euc-tw is a MIME name

ibm-1363_P110-2000 { UTR22* } # Korean KSC Korean Windows MBCS 
                        ibm-1363 { IBM* }
                        ibm-1363_VASCII_VSUB_VPUA

ibm-1363_P11B-2000 { UTR22* }
                        ibm-1363 # Leave untagged because this isn't the default
                        ibm-1363_VSUB_VPUA
                        windows-949
                        cp949
                        cp1363
                        ksc
                        # korean # The korean alias from IANA goes to ibm-949_P11A-2000

ibm-1383_P110-2000 { UTR22* }
                        ibm-1383_VPUA
                        ibm-1383
                        EUC-CN
                        ibm-eucCN
                        GB_2312-80 { IANA* }
                        chinese { IANA }
                        gb              # This is not an IANA name. gb in IANA means Great Britain.
                        iso-ir-58 { IANA }
                        csISO58GB231280 { IANA }
                        GB2312 { MIME* }
                        gb2312-1980
                        cp1383
                        1383
                        csGB2312    # China EUC. x-euc-cn is a MIME name

ibm-1162_P100-1999 { UTR22* }   # Thai (w/ euro update)
                        ibm-1162 { IBM* }
                        TIS-620 { IANA* }
                        cp874
                        windows-874
                        ms874
                        cp9066
                        874
ibm-874 { IBM* }        ibm-9066 { IBM }    # Thai PC (w/o euro update). Yes ibm-874 == ibm-9066. ibm-1161 has the euro update.

# Platform codepages
ibm-437_P100-1995 { UTR22* }    ibm-437 { IBM* } IBM437 { IANA* } cp437 { IANA } 437 { IANA } csPC8CodePage437 { IANA }  # PC US
ibm-850 { IBM* }        IBM850 { IANA* } cp850 { IANA MIME* } 850 { IANA } csPC850Multilingual { IANA } # PC latin1
ibm-851 { IBM* }        IBM851 { IANA* } cp851 { IANA MIME* } 851 { IANA } csPC851 { IANA }             # PC DOS Greek (w/o euro)
ibm-858 { IBM* }        IBM00858 { IANA* } CCSID00858 { IANA } CP00858 { IANA } PC-Multilingual-850+euro { IANA } cp858 { MIME* }  # PC latin1 with Euro
ibm-9044 { IBM* }       # PC latin2 (w/ euro update) Updated version of ibm-852. cp852 is a MIME name for IBM-852
ibm-852 { IBM* }        IBM852 { IANA* } cp852 { IANA } 852 { IANA } csPCp852 { IANA } # PC latin2 (w/o euro update)
ibm-872 { IBM* }        # PC cyrillic (w/ euro update) Updated version of ibm-855.  cp855 is a MIME name for IBM-855
ibm-855 { IBM* }        IBM855 { IANA* } cp855 { IANA } 855 { IANA } csIBM855 { IANA } csPCp855 # PC cyrillic (w/o euro update)
ibm-856 { IBM* }        cp856 { MIME* }  856 # PC Hebrew (old)
ibm-9049 { IBM* }       # PC Latin 5 (Turkish) (w/ euro update) Updated version of ibm-857
ibm-857 { IBM* }        IBM857 { IANA* } 857 { IANA } csIBM857 { IANA } cp857 { IANA MIME* }    # PC Latin 5 (w/o euro update)
ibm-859 { IBM* }        cp859 { MIME* }     # PC Latin 9 (w/ euro update)
ibm-860 { IBM* }        IBM860 { IANA* } cp860 { IANA MIME* } 860 { IANA } csIBM860 { IANA }    # PC Portugal
ibm-861 { IBM* }        IBM861 { IANA* } cp861 { IANA MIME* } 861 { IANA } cp-is { IANA } csIBM861 { IANA } # PC Iceland
ibm-867 { IBM* }        cp867   # PC Hebrew (w/ euro update) Updated version of ibm-862
ibm-862 { IBM* }        IBM862 { IANA* } cp862 { IANA MIME* } 862 { IANA } csPC862LatinHebrew { IANA }  # PC Hebrew (w/o euro update)
ibm-863 { IBM* }        IBM863 { IANA* } cp863 { IANA MIME* } 863 { IANA } csIBM863 { IANA } # PC Canadian French
ibm-17248_X110-1999 { UTR22* }   ibm-17248 { IBM* }      # PC Arabic (w/ euro update) Updated version of ibm-864
ibm-864 { IBM* }        IBM864 { IANA* } cp864 { IANA MIME* } csIBM864 { IANA } # PC Arabic (w/o euro update)
ibm-865 { IBM* }        IBM865 { IANA* } cp865 { IANA MIME* } 865 { IANA } csIBM865 { IANA }    # PC Nordic
ibm-808 { IBM* }        # PC Russian (w/ euro update) Updated version of ibm-866
ibm-866 { IBM* }        IBM866 { IANA* } cp866 { IANA MIME* } 866 { IANA } csIBM866 { IANA } # PC Russian (w/o euro update)
ibm-868 { IBM* }        IBM868 { IANA* } CP868 { IANA MIME* } cp-ar { IANA } csIBM868 { IANA } 868  # PC Urdu
ibm-9061 { IBM* }       # PC Greek (w/ euro update) Updated version of ibm-869
ibm-869 { IBM* }        IBM869 { IANA* } cp869 { IANA MIME* } 869 { IANA } cp-gr { IANA } csIBM869 { IANA } # PC Greek (w/o euro update)
ibm-878 { IBM* }        KOI8-R { IANA* MIME* } cp878 koi8 csKOI8R { IANA }  # Russian internet
ibm-902 { IBM* }        cp922 { MIME* } 922 # PC Estonian (w/ euro update)
ibm-922 { IBM* }                            # PC Estonian (w/o euro update)
# ibm-941                 jis-208 jisx-208    # Pure DBCS jisx-208 # ibm-941 is not JISX 208 code page

ibm-5346_P100-1998 { UTR22* }   ibm-5346 { IBM* } windows-1250 { IANA* } cp1250 # Windows Latin2 (w/ euro update)
ibm-5347_P100-1998 { UTR22* }   ibm-5347 { IBM* } windows-1251 { IANA* } cp1251 # Windows Cyrillic (w/ euro update)
ibm-5348_P100-1997 { UTR22* }   ibm-5348 { IBM* } windows-1252 { IANA* } cp1252 # Windows Latin1 (w/ euro update)
ibm-5349_P100-1998 { UTR22* }   ibm-5349 { IBM* } windows-1253 { IANA* } cp1253 # Windows Greek (w/ euro update)
ibm-5350_P100-1998 { UTR22* }   ibm-5350 { IBM* } windows-1254 { IANA* } cp1254 # Windows Turkish (w/ euro update)
ibm-5351_P100-1998 { UTR22* }   ibm-5351 { IBM* } windows-1255 { IANA* } cp1255 # Windows Hebrew (w/ euro update)
ibm-5352_P100-1998 { UTR22* }   ibm-5352 { IBM* } windows-1256 { IANA* } cp1256 # Windows Arabic (w/ euro update)
ibm-5353_P100-1998 { UTR22* }   ibm-5353 { IBM* } windows-1257 { IANA* } cp1257 # Windows Baltic (w/ euro update)
ibm-5354_P100-1998 { UTR22* }   ibm-5354 { IBM* } windows-1258 { IANA* } cp1258 # Windows Vietnamese (w/ euro update)
ibm-1250_P100-1995 { UTR22* }   ibm-1250 { IBM* }       # Windows Latin2 (w/o euro update)
ibm-1251_P100-1995 { UTR22* }   ibm-1251 { IBM* }       # Windows Cyrillic (w/o euro update)
ibm-1252_P100-2000 { UTR22* }   ibm-1252 { IBM* }       # Windows Latin 1 without Euro
ibm-1253_P100-1995 { UTR22* }   ibm-1253 { IBM* }       # Windows Greek (w/o euro update)
ibm-1254_P100-1995 { UTR22* }   ibm-1254 { IBM* }       # Windows Turkish (w/o euro update)
ibm-1255_P100-1995 { UTR22* }   ibm-1255 { IBM* }       # Windows Hebrew (w/o euro update)
ibm-1256_P110-1997 { UTR22* }   ibm-1256 { IBM* }       # Windows Arabic (w/o euro update)
ibm-1257_P100-1995 { UTR22* }   ibm-1257 { IBM* }       # Windows Baltic (w/o euro update)
ibm-1258_P100-1997 { UTR22* }   ibm-1258 { IBM* }       # Windows Vietnamese (w/o euro update)

ibm-1275_P100-1995 { UTR22* }   ibm-1275 { IBM* } macintosh { IANA* } mac { IANA MIME* } csMacintosh { IANA } # Apple latin 1
ibm-1276_P100-1995 { UTR22* }   ibm-1276 { IBM* } Adobe-Standard-Encoding { IANA* } csAdobeStandardEncoding { IANA } # Different from ISO-Unicode-IBM-1276 (GCSGID: 1276)
ibm-1277_P100-1995 { UTR22* }   ibm-1277 { IBM* } Adobe-Latin1-Encoding
ibm-1280_P100-1996 { UTR22* }   ibm-1280 { IBM* } macgr                   # Apple Greek
ibm-1281_P100-1996 { UTR22* }   ibm-1281 { IBM* } mactr                   # Apple Turkish
ibm-1282_P100-1996 { UTR22* }   ibm-1282 { IBM* } macce                   # Apple Central Europe
ibm-1283_P100-1996 { UTR22* }   ibm-1283 { IBM* } maccy                   # Apple Cyrillic

ibm-1051_P100-1995 { UTR22* }   ibm-1051 { IBM* } hp-roman8 { IANA* } roman8 r8 csHPRoman8  # HP Latin1

ibm-1006_P100-1995 { UTR22* }   ibm-1006 { IBM* } ibm-1006_VPUA  # Urdu
ibm-1098_P100-1995 { UTR22* }   ibm-1098 { IBM* } ibm-1098_VSUB_VPUA # PC Farsi
ibm-1124_P100-1996 { UTR22* }   ibm-1124 { IBM* } ibm-1124_STD   # ISO Cyrillic Ukraine
ibm-1125_P100-1997 { UTR22* }   ibm-1125 { IBM* } ibm-1125_VSUB  # Cyrillic Ukraine PC
ibm-1129_P100-1997 { UTR22* }   ibm-1129 { IBM* } ibm-1129_STD   # ISO Vietnamese
ibm-1131_P100-1997 { UTR22* }   ibm-1131 { IBM* } ibm-1131_VSUB  # Cyrillic Belarus PC
ibm-1133_P100-1997 { UTR22* }   ibm-1133 { IBM* } ibm-1133_STD   # ISO Lao
ibm-1381_P110-2000 { UTR22* }   ibm-1381 { IBM* } ibm-1381_VSUB_VPUA # S-Ch PC Data mixed (IBM GB) 

# Added for more euro support

ibm-849 { IBM* }        cp1131          # PC     Belarus (w/ euro update)
ibm-848 { IBM* }        cp1125          # PC     Ukraine (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-1046               # PC     Arabic without EURO

# EBCDIC codepages according to the CDRA

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

ibm-273_P100-1995 { UTR22* }    ibm-273 { IBM* } IBM273 { IANA* } csIBM273 { IANA } ebcdic-de CP273 { IANA } cpibm273 273 # EBCDIC Germanay, Austria
ibm-277_P100-1995 { UTR22* }    ibm-277 { IBM* } IBM277 { IANA* } EBCDIC-CP-DK { IANA } EBCDIC-CP-NO { IANA } csIBM277 { IANA } ebcdic-dk cp277 cpibm277 277 # EBCDIC Denmark
ibm-278_P100-1995 { UTR22* }    ibm-278 { IBM* } IBM278 { IANA* } ebcdic-cp-fi { IANA } ebcdic-cp-se { IANA } csIBM278 { IANA } ebcdic-sv cp278 cpibm278 278 # EBCDIC Sweden
ibm-280_P100-1995 { UTR22* }    ibm-280 { IBM* } IBM280 { IANA* } ebcdic-cp-it { IANA } csIBM280 { IANA } CP280 { IANA } cpibm280 280 # EBCDIC Italy
ibm-284_P100-1995 { UTR22* }    ibm-284 { IBM* } IBM284 { IANA* } ebcdic-cp-es { IANA } csIBM284 { IANA } CP284 { IANA } cpibm284 284 # EBCDIC Spain
ibm-285_P100-1995 { UTR22* }    ibm-285 { IBM* } IBM285 { IANA* } ebcdic-cp-gb { IANA } csIBM285 { IANA } CP285 { IANA } ebcdic-gb cpibm285 285 # EBCDIC UK Ireland
ibm-290_P100-1995 { UTR22* }    ibm-290 { IBM* } IBM290 { IANA* } EBCDIC-JP-kana { IANA } csIBM290 { IANA } cp290 { IANA } # host SBCS (Katakana)
ibm-297_P100-1995 { UTR22* }    ibm-297 { IBM* } IBM297 { IANA* } ebcdic-cp-fr { IANA } csIBM297 { IANA } cp297 { IANA } cpibm297 297 # EBCDIC France
ibm-420_X120-1999 { UTR22* }    ibm-420 { IBM* } IBM420 { IANA* } ebcdic-cp-ar1 { IANA } csIBM420 { IANA } cp420 { IANA } 420
ibm-424_P100-1995 { UTR22* }    ibm-424 { IBM* } IBM424 { IANA* } ebcdic-cp-he { IANA } csIBM424 { IANA } cp424 { IANA } 424
ibm-500_P100-1995 { UTR22* }    ibm-500 { IBM* } IBM500 { IANA* } ebcdic-cp-be { IANA } csIBM500 { IANA } CP500 { IANA } ebcdic-cp-ch { IANA } cpibm500 500 # EBCDIC International Latin1
ibm-803 { IBM* }        cp803                # Old EBCDIC Hebrew
#ibm-834                # Korean DBCS Host (ibm-933 is the mixed host version of this codepage)
#ibm-835                # DBCS T-Ch Host (ibm-9027 is the Euro update of this codepage)
ibm-870_P100-2000 { UTR22* }    IBM870 { IANA* } ibm-870 { IBM* } CP870 { IANA } ibm-870_STD ebcdic-cp-roece { IANA } ebcdic-cp-yu { IANA } csIBM870 { IANA }
ibm-871 { IBM* }        IBM871 { IANA* } ebcdic-cp-is { IANA } csIBM871 { IANA } ebcdic-is cpibm871 CP871 { IANA } 871 # EBCDIC Iceland
ibm-875_P100-2000 { UTR22* }    ibm-875 { IBM* } cp875 875 ibm-875_STD 
ibm-918_P100-2000 { UTR22* }    ibm-918 { IBM* } IBM918 { IANA* } CP918 { IANA } ibm-918_VPUA ebcdic-cp-ar2 { IANA } csIBM918 { IANA }
ibm-930_P120-1999 { UTR22* }    # EBCDIC_STATEFUL Katakana-Kanji Host Mixed.
                        ibm-930 { IBM* }
                        ibm-5026 { IBM } # Yes this is correct
                        cp930
                        cpibm930
                        930
ibm-933_P110-1995 { UTR22* }    ibm-933 { IBM* } cp933 cpibm933 933   # Korea EBCDIC MIXED 
ibm-935_P110-1999 { UTR22* }    ibm-935 { IBM* } cp935 cpibm935 935   # China EBCDIC MIXED 
ibm-937_P110-1999 { UTR22* }    ibm-937 { IBM* } cp937 cpibm937 937   # 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
                        cp939
                        939
ibm-1025_P100-1995 { UTR22* }   ibm-1025 { IBM* } ibm-1025_STD
ibm-1026_P100-1995 { UTR22* }   ibm-1026 { IBM* } IBM1026 { IANA* } CP1026 { IANA } csIBM1026 { IANA } ibm-1026_STD
ibm-1047_P100-1995 { UTR22* }   ibm-1047 { IBM* IANA* } cpibm1047            # EBCDIC Open systems Latin1
ibm-1097_P100-1995 { UTR22* }   ibm-1097 { IBM* } ibm-1097_VPUA
ibm-1112_P100-1995 { UTR22* }   ibm-1112 { IBM* } cp1112 1112 ibm-1112_STD
ibm-1122_P100-1999 { UTR22* }   ibm-1122 { IBM* } cp1122 1122 ibm-1122_STD
ibm-1123_P100-1995 { UTR22* }   ibm-1123 { IBM* } cpibm1123 ibm-1123_STD            # EBCDIC Cyrillic Ukraine
ibm-1130_P100-1997 { UTR22* }   ibm-1130 { IBM* } ibm-1130_STD
ibm-1132_P100-1998 { UTR22* }   ibm-1132 { IBM* } ibm-1132_STD
ibm-1137_P100-1999 { UTR22* }   ibm-1137 { IBM* } ibm-1137_STD
ibm-1388_P103-2001 { UTR22* }   ibm-1388 { IBM* } ibm-9580 { IBM } ibm-1388_VPUA    # S-Ch DBCS-Host Data GBK mixed MBCS. Yes ibm-9580 is an alias.
ibm-9030_P100-2000 { UTR22* }   ibm-9030 { IBM* } ibm-838 { IBM } ibm-9030_STD      # Yes ibm-838 is an alias.

# with Euro
ibm-1140_P100-1997 { UTR22* }   ibm-1140 { IBM* } cpibm1140 IBM01140 { IANA* } CCSID01140 { IANA } CP01140 { IANA } ebcdic-us-37+euro { IANA } # EBCDIC US
ibm-1141_P100-1997 { UTR22* }   ibm-1141 { IBM* } cpibm1141 IBM01141 { IANA* } CCSID01141 { IANA } CP01141 { IANA } ebcdic-de-273+euro { IANA } # EBCDIC Germanay,   Austria
ibm-1142_P100-1997 { UTR22* }   ibm-1142 { IBM* } cpibm1142 IBM01142 { IANA* } CCSID01142 { IANA } CP01142 { IANA } ebcdic-dk-277+euro { IANA } ebcdic-no-277+euro { IANA } # EBCDIC Denmark
ibm-1143_P100-1997 { UTR22* }   ibm-1143 { IBM* } cpibm1143 IBM01143 { IANA* } CCSID01143 { IANA } CP01143 { IANA } ebcdic-fi-278+euro { IANA } ebcdic-se-278+euro { IANA } # EBCDIC Sweden
ibm-1144_P100-1997 { UTR22* }   ibm-1144 { IBM* } cpibm1144 IBM01144 { IANA* } CCSID01144 { IANA } CP01144 { IANA } ebcdic-it-280+euro { IANA } # EBCDIC Italy
ibm-1145_P100-1997 { UTR22* }   ibm-1145 { IBM* } cpibm1145 IBM01145 { IANA* } CCSID01145 { IANA } CP01145 { IANA } ebcdic-es-284+euro { IANA } # EBCDIC Spain
ibm-1146_P100-1997 { UTR22* }   ibm-1146 { IBM* } cpibm1146 IBM01146 { IANA* } CCSID01146 { IANA } CP01146 { IANA } ebcdic-gb-285+euro { IANA } # EBCDIC UK Ireland
ibm-1147_P100-1997 { UTR22* }   ibm-1147 { IBM* } cpibm1147 IBM01147 { IANA* } CCSID01147 { IANA } CP01147 { IANA } ebcdic-fr-297+euro { IANA } # EBCDIC France
ibm-1148_P100-1997 { UTR22* }   ibm-1148 { IBM* } cpibm1148 IBM01148 { IANA* } CCSID01148 { IANA } CP01148 { IANA } ebcdic-international-500+euro { IANA } # EBCDIC International Latin1
ibm-1149_P100-1997 { UTR22* }   ibm-1149 { IBM* } cpibm1149 IBM01149 { IANA* } CCSID01149 { IANA } CP01149 { IANA } ebcdic-is-871+euro { IANA } # EBCDIC Iceland
ibm-1153_P100-1999 { UTR22* }   ibm-1153 { IBM* } cpibm1153             # EBCDIC latin 2
ibm-1154_P100-1999 { UTR22* }   ibm-1154 { IBM* } cp1025 cpibm1154      # EBCDIC Cyrillic Multilingual
ibm-1155_P100-1999 { UTR22* }   ibm-1155 { IBM* } cpibm1155             # EBCDIC Turkey
ibm-1156_P100-1999 { UTR22* }   ibm-1156 { IBM* } cpibm1156             # EBCDIC Baltic Multilingual
ibm-1157_P100-1999 { UTR22* }   ibm-1157 { IBM* } cpibm1157             # EBCDIC Estonia
ibm-1158_P100-1999 { UTR22* }   ibm-1158 { IBM* } cp1123 cpibm1158 1123 # EBCDIC Cyrillic Ukraine
ibm-1159_P100-1999 { UTR22* }   ibm-1159 { IBM* } cp28709               # SBCS T-Ch Host
ibm-1160_P100-1999 { UTR22* }   ibm-1160 { IBM* } cp9030 cpibm1160      # EBCDIC Thailand
ibm-1164_P100-1999 { UTR22* }   ibm-1164 { IBM* } cp1130 cpibm1164      # EBCDIC Viet Nam
ibm-1364_P110-2000 { UTR22* }   ibm-1364 { IBM* } ibm-1364_VPUA cp1364  # Korean Host Mixed
ibm-1371_P100-1999 { UTR22* }   ibm-1371 { IBM* } cpibm1371             # Taiwan EBCDIC MIXED
ibm-1390_P100-1999 { UTR22* }   ibm-1390 { IBM* } cpibm1390             # Japan EBCDIC MIXED
ibm-1399_P100-1999 { UTR22* }   ibm-1399 { IBM* }                       # Host MBCS (Latin-Kanji)
ibm-4899_P100-1998 { UTR22* }   ibm-4899 { IBM* } cpibm4899             # Old EBCDIC Hebrew
ibm-4971_P100-1999 { UTR22* }   ibm-4971 { IBM* } cpibm4971             # EBCDIC Greek
ibm-5123_P100-1999 { UTR22* }   ibm-5123 { IBM* } cp1027                # Host Roman Jis
ibm-8482 { IBM* }                            # host SBCS (Katakana)
ibm-9027_P100-1999 { UTR22* }   ibm-9027 { IBM* }                       # DBCS T-Ch Host (simlar to ibm-835)
ibm-12712_P100-1998 { UTR22* }  ibm-12712 { IBM* } cpibm12712 ebcdic-he # EBCDIC Hebrew (new sheqel, control charaters update)
ibm-16684_P100-1999 { UTR22* }  ibm-16684 { IBM* }      cp300                # DBCS Jis + Roman Jis Host
ibm-16804_X110-1999 { UTR22* }  ibm-16804 { IBM* } cpibm16804 ebcdic-ar # EBCDIC Arabic

# unsupported IANA names
# ebcdic-it csEBCDICIT
# ebcdic-es csEBCDICES
# ebcdic-fr csEBCDICFR
# ibm-274   IBM274 { IANA* } cp274 csIBM274 ebcdic-be
# ibm-870   IBM870 { IANA* } ebcdic-cp-roece ebcdic-cp-yu csIBM870 cp870 870

# 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.

# This avoids the duplication of all EBCDIC SBCS and mixed-SBCS/DBCS
# mapping files.

# Some examples
ibm-37_P100-1995,swaplfnl     ibm-37,swaplfnl ibm-37-s390 ibm037-s390
ibm-1047_P100-1995,swaplfnl   ibm-1047,swaplfnl ibm-1047-s390
ibm-1140_P100-1997,swaplfnl   ibm-1140,swaplfnl ibm-1140-s390
ibm-1142_P100-1997,swaplfnl   ibm-1142,swaplfnl ibm-1142-s390
ibm-1143_P100-1997,swaplfnl   ibm-1143,swaplfnl ibm-1143-s390
ibm-1144_P100-1997,swaplfnl   ibm-1144,swaplfnl ibm-1144-s390
ibm-1145_P100-1997,swaplfnl   ibm-1145,swaplfnl ibm-1145-s390
ibm-1146_P100-1997,swaplfnl   ibm-1146,swaplfnl ibm-1146-s390
ibm-1147_P100-1997,swaplfnl   ibm-1147,swaplfnl ibm-1147-s390
ibm-1148_P100-1997,swaplfnl   ibm-1148,swaplfnl ibm-1148-s390
ibm-1149_P100-1997,swaplfnl   ibm-1149,swaplfnl ibm-1149-s390
ibm-1153_P100-1999,swaplfnl   ibm-1153,swaplfnl ibm-1153-s390
ibm-12712_P100-1998,swaplfnl  ibm-12712,swaplfnl ibm-12712-s390
ibm-16804_X110-1999,swaplfnl  ibm-16804,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
