# *******************************************************************************
# *
# *   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");
UTF-7 { IANA* MIME* }           cp65000

SCSU { IANA* }
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* }

ISO-8859-1 { MIME* IANA }
    LATIN_1     # Old ICU name
    ibm-819 { IBM* }
    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 { IBM* }        IBM367 { IANA* }    # This is ASCII, but it has fallbacks

# Central Europe
# Standard iso-8859-1, which does not have the Euro update.
# See iso-8859-15 (latin9) for the Euro update
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 they are not the same
# -E means explicit. -I means implicit.  However those aliases are rarely used.
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 }
                        cp1089
                        1089

# ISO Greek (w/ euro update)
ibm-4909 { IBM* }       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
ibm-813                 # Same as 4909 above but without the euro update

# hebrew
# ISO_8859-8-E and ISO_8859-8-I are similar to this charset, but they are not the same
# -E means explicit. -I means implicit.
ibm-916 { IBM* }        iso-8859-8 { MIME* IANA }
                        hebrew { IANA }
                        8859-8
                        csISOLatinHebrew { IANA }
                        iso-ir-138 { IANA }
                        ISO_8859-8:1988 { IANA* }
                        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

# 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

# Windows Latin 1 without Euro
ibm-1252 { IBM* }       # ibm-1004 and cp1004 are different from this mapping table


# 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
                        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 }
                        johab
                        ks_x_1001:1992
                        949
                        korean { IANA }
                        ksc5601_1992 # KSC-5601-1992
                        ksc5601_1987 # Needed by Java

ibm-1370_P100-2000 { UTR22* }
                        ibm-1370 { IBM* }
                        ibm-1370_VSUB_VPUA
                        Big5 { IANA* MIME* }
                        csBig5 { IANA }
                        x-big5
                        cp950
                        950 # Taiwan Big-5 (w/ euro update)
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
                        cp33722
                        33722
                        ibm-5050
ibm-33722_P12A-2000 { UTR22* }
                        ibm-33722 # Leave untagged because this isn't the default
                        ibm-33722_VPUA
                        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-1362 { IBM } # ibm-1362 is a DBCS codepage, not MBCS

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 { IBM* }       TIS-620 { IANA* } cp874 windows-874 ms874 cp9066 874 # Thai (w/ euro update)
ibm-874 { IBM* }        ibm-1161 # Same as 1162 (w/o euro update)

# Platform codepages
ibm-437 { IBM* }        cp437 csPC8CodePage437 437  # PC US
ibm-850 { IBM* }        IBM850 { IANA* } cp850 { MIME* } 850 csPC850Multilingual    # PC latin1
ibm-851 { IBM* }        IBM851 { IANA* } cp851 { MIME* } 851 csPC851            # PC DOS Greek (w/o euro)
ibm-858 { IBM* }        cp858  { MIME* } IBM00858 { IANA* }       # PC latin1 with Euro cp850 removed
ibm-9044 { IBM* }       852 csPCp852 cp852  # PC latin2 (w/ euro update) cp852 is a MIME name for IBM-852
ibm-852 { IBM* }        IBM852 { IANA* }    # PC latin2 (w/o euro update)
ibm-872 { IBM* }        855 csIBM855 cp855 csPCp855 # PC cyrillic (w/ euro update) cp855 is a MIME name for IBM-855
ibm-855 { IBM* }        IBM855 { IANA* }            # PC cyrillic (w/o euro update)
ibm-856 { IBM* }        cp856 { MIME* }  856 # PC Hebrew (old)
ibm-9049 { IBM* }       857 csIBM857 cp857 { MIME* } # PC Latin 5 (Turkish) (w/ euro update)
ibm-857 { IBM* }        IBM857 { IANA* }    # PC Latin 5 (w/o euro update)
ibm-859 { IBM* }        cp859 { MIME* }     # PC Latin     9 (w/ euro update)
ibm-860 { IBM* }        IBM860 { IANA* } cp860 { MIME* } 860 csIBM860         # PC Portugal
ibm-861 { IBM* }        IBM861 { IANA* } cp861 { MIME* } 861 cp-is csIBM861   # PC Iceland
ibm-867 { IBM* }        cp867  862 cp862 { MIME* } cspc862latinhebrew    # PC Hebrew (w/ euro update)
ibm-862 { IBM* }        IBM862 { IANA* }                                 # PC Hebrew (w/o euro update)
ibm-863 { IBM* }        IBM863 { IANA* } cp863 { MIME* } 863 csIBM863         # PC Canadian French
ibm-17248 { IBM* }      cp864 { MIME* } csIBM864 # PC Arabic (w/ euro update)
ibm-864 { IBM* }        IBM864 { IANA* }         # PC Arabic (w/o euro update)
ibm-865 { IBM* }        IBM865 { IANA* } cp865 { MIME* } 865 csIBM865         # PC Nordic
ibm-808 { IBM* }        cp866 { MIME* } 866 csIBM866 # PC Russian (w/ euro update)
ibm-866 { IBM* }                                    # PC Russian (w/o euro update)
ibm-868 { IBM* }        IBM868 { IANA* } cp868 { MIME* } cp-ar csIBM868 868   # PC Urdu
ibm-9061 { IBM* }       cp869 { MIME* } 869 cp-gr csIBM869   # PC Greek (w/ euro update)
ibm-869 { IBM* }       IBM869 { IANA* }                     # PC Greek (w/o euro update)
ibm-878 { IBM* }        KOI8-R { IANA* MIME* } cp878 koi8 cskoi8r  # Russian internet
ibm-901 { IBM* }        cp921 { MIME* } 921 # PC Baltic (w/ euro update)
ibm-921 { IBM* }                            # PC Baltic (w/o euro update)
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 { IBM* }       windows-1250 { IANA* } cp1250       # Windows Latin2 (w/ euro update)
ibm-5347 { IBM* }       windows-1251 { IANA* } cp1251       # Windows Cyrillic (w/ euro update)
ibm-5348 { IBM* }       windows-1252 { IANA* } cp1252       # Windows Latin1 (w/ euro update)
ibm-5349 { IBM* }       windows-1253 { IANA* } cp1253       # Windows Greek (w/ euro update)
ibm-5350 { IBM* }       windows-1254 { IANA* } cp1254       # Windows Turkish (w/ euro update)
ibm-5351 { IBM* }       windows-1255 { IANA* } cp1255       # Windows Hebrew (w/ euro update)
ibm-5352 { IBM* }       windows-1256 { IANA* } cp1256       # Windows Arabic (w/ euro update)
ibm-5353 { IBM* }       windows-1257 { IANA* } cp1257       # Windows Baltic (w/ euro update)
ibm-5354 { IBM* }       windows-1258 { IANA* } cp1258       # Windows Vietnamese (w/ euro update)
ibm-1250 { IBM* }       # Windows Latin2 (w/o euro update)
ibm-1251 { IBM* }       # Windows Cyrillic (w/o euro update)
ibm-1253 { IBM* }       # Windows Greek (w/o euro update)
ibm-1254 { IBM* }       # Windows Turkish (w/o euro update)
ibm-1255 { IBM* }       # Windows Hebrew (w/o euro update)
ibm-1256 { IBM* }       # Windows Arabic (w/o euro update)
ibm-1257 { IBM* }       # Windows Baltic (w/o euro update)
ibm-1258 { IBM* }       # Windows Vietnamese (w/o euro update)

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

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

ibm-806_P100-2000 { UTR22* }    ibm-806 { IBM* } ibm-806_VSUB    # PC ISCII-91: Indian Script Code
ibm-1006_P100-2000 { UTR22* }   ibm-1006 { IBM* } ibm-1006_VPUA  # Urdu
ibm-1006_X100-2000 { UTR22* }   ibm-1006_STD            # Urdu
ibm-1098_P100-2000 { UTR22* }   ibm-1098 { IBM* } ibm-1098_VSUB_VPUA # Farsi
ibm-1098_X100-2000 { UTR22* }   ibm-1098_VSUB           # Farsi
ibm-1124_P100-2000 { UTR22* }   ibm-1124 { IBM* } ibm-1124_STD   # ISO Cyrillic Ukraine
ibm-1125_P100-2000 { UTR22* }   ibm-1125 { IBM* } ibm-1125_VSUB  # Cyrillic Ukraine PC
ibm-1129_P100-2000 { UTR22* }   ibm-112 { IBM* }9 ibm-1129_STD   # ISO Vietnamese
ibm-1131_P100-2000 { UTR22* }   ibm-1131 { IBM* } ibm-1131_VSUB  # Cyrillic Belarus PC
ibm-1133_P100-2000 { 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) 
ibm-9066_P100-2000 { UTR22* }   ibm-9066 { IBM* } ibm-9066_VSUB  # Thai PC

# 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 { IBM* }       cp1008          # 8-bit Arabic (w/ euro update)
ibm-9238 { IBM* }       cp1046          # PC     Arabic Extended (w/ euro update)
# ibm-5210                cp1114          # PC     SBCS Big-5 (w/ euro update)
# ibm-21427               cp947           # PC     DBCS Big-5 (w/ euro update)

# ibm-1046               # PC     Arabic without EURO

# EBCDIC codepages according to the CDRA

# without Euro
ibm-37 { IBM* }         IBM037 { IANA* } # EBCDIC US
                        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 { IBM* }        IBM273 { IANA* } csIBM273 { IANA } ebcdic-de CP273 { IANA } cpibm273 273 # EBCDIC Germanay, Austria
ibm-277 { IBM* }        IBM277 { IANA* } EBCDIC-CP-DK { IANA } EBCDIC-CP-NO { IANA } csIBM277 { IANA } ebcdic-dk cp277 cpibm277 277 # EBCDIC Denmark
ibm-278 { IBM* }        IBM278 { IANA* } ebcdic-cp-fi { IANA } ebcdic-cp-se { IANA } csIBM278 { IANA } ebcdic-sv cp278 cpibm278 278 # EBCDIC Sweden
ibm-280 { IBM* }        IBM280 { IANA* } ebcdic-cp-it { IANA } csIBM280 { IANA } CP280 { IANA } cpibm280 280 # EBCDIC Italy
ibm-284 { IBM* }        IBM284 { IANA* } ebcdic-cp-es { IANA } csIBM284 { IANA } CP284 { IANA } cpibm284 284 # EBCDIC Spain
ibm-285 { IBM* }        IBM285 { IANA* } ebcdic-cp-gb { IANA } csIBM285 { IANA } CP285 { IANA } ebcdic-gb cpibm285 285 # EBCDIC UK Ireland
ibm-290 { IBM* }        IBM290 { IANA* } EBCDIC-JP-kana { IANA } csIBM290 { IANA } cp290 { IANA } # host SBCS (Katakana)
ibm-297 { IBM* }        IBM297 { IANA* } ebcdic-cp-fr { IANA } csIBM297 { IANA } cp297 { IANA } cpibm297 297 # EBCDIC France
ibm-420 { IBM* }        IBM420 { IANA* } ebcdic-cp-ar1 { IANA } csIBM420 { IANA } cp420 { IANA } 420
ibm-424 { IBM* }        IBM424 { IANA* } ebcdic-cp-he { IANA } csIBM424 { IANA } cp424 { IANA } 424
ibm-500 { IBM* }        IBM500 { IANA* } cpibm500 csIBM500 { IANA } CP500 { IANA } ebcdic-cp-be { IANA } ebcdic-cp-ch { IANA } 500 # EBCDIC International Latin1
ibm-803 { IBM* }        cp803                # Old EBCDIC Hebrew
#ibm-834                 cp834                # Korean DBCS Host (ibm-933 is the mixed host version of this codepage)
#ibm-835                 cp835                # 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* }    IBM918 { IANA* } ibm-918 { IBM* } CP918 { IANA } ibm-918_VPUA ebcdic-cp-ar2 { IANA } csIBM918 { IANA }
ibm-918_X100-2000 { UTR22* }    ibm-918_STD
ibm-930 { IBM* }        cp930 cpibm930 930 #ibm-5026 # EBCDIC_STATEFUL Katakana-Kanji Host Mixed. ibm-930 =? ibm-5026
ibm-933 { IBM* }        cp933 cpibm933 933   # Korea EBCDIC MIXED 
ibm-935 { IBM* }        cp935 cpibm935 935   # China EBCDIC MIXED 
ibm-937 { IBM* }        cp937 cpibm937 937   # Taiwan EBCDIC MIXED
ibm-939 { IBM* }        cp939 939 #ibm-5035   # EBCDIC_STATEFUL Latin-Kanji Host Mixed. ibm-939 =? ibm-5035
ibm-1025_P100-2000 { UTR22* }   ibm-1025 { IBM* } ibm-1025_STD
ibm-1026_P100-2000 { UTR22* }   IBM1026 { IANA* } ibm-1026 { IBM* } CP1026 { IANA } csIBM1026 { IANA } ibm-1026_STD
ibm-1047                cpibm1047            # EBCDIC Open systems Latin1
ibm-1097_P100-2000 { UTR22* }   ibm-1097 { IBM* } ibm-1097_VPUA
ibm-1097_X100-2000 { UTR22* }   ibm-1097_STD 
ibm-1112_P100-2000 { UTR22* }   ibm-1112 { IBM* } cp1112 1112 ibm-1112_STD
ibm-1122_P100-2000 { UTR22* }   ibm-1122 { IBM* } cp1122 1122 ibm-1122_STD
ibm-1130_P100-2000 { UTR22* }   ibm-1130 { IBM* } ibm-1130_STD
ibm-1132_P100-2000 { UTR22* }   ibm-1132 { IBM* } ibm-1132_STD
ibm-1137_P100-2000 { UTR22* }   ibm-1137 { IBM* } ibm-1137_STD
ibm-1388_P103-2001 { UTR22* }   ibm-1388 { IBM* }             # S-Ch DBCS-Host Data GBK mixed MBCS
ibm-9030_P100-2000 { UTR22* }   ibm-9030 { IBM* } ibm-9030_STD

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

# without Euro
ibm-37-s390 { UTR22* }    ibm037-s390   # EBCDIC US
ibm-1047-s390 { UTR22* }    # EBCDIC for S/390 Open Edition

# with Euro 
ibm-1140-s390 { UTR22* }    # EBCDIC US
ebcdic-xml-us               # Yet another form of ibm-1140
ibm-1142-s390 { UTR22* }    # EBCDIC Denmark
ibm-1143-s390 { UTR22* }    # EBCDIC Sweden
ibm-1144-s390 { UTR22* }    # EBCDIC Italy
ibm-1145-s390 { UTR22* }    # EBCDIC Spain
ibm-1146-s390 { UTR22* }    # EBCDIC UK Ireland
ibm-1147-s390 { UTR22* }    # EBCDIC France
ibm-1148-s390 { UTR22* }    # EBCDIC International Latin1
ibm-1149-s390 { UTR22* }    # EBCDIC Iceland
ibm-1153-s390 { UTR22* }    # EBCDIC latin 2
ibm-12712-s390 { UTR22* }   # EBCDIC Hebrew
ibm-16804-s390 { UTR22* }   # EBCDIC Arabic

