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

#This is an alias file used by the character set converter
#format:
#Actual File Name || Algorithm name     alias1 alias2 ...
#except for column1(file names) case insensitive

# 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.isi.edu/in-notes/iana/assignments/character-sets

# Name matching is case-insensitive.
# 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.

# Algorithmic
UTF8                    utf-8 utf8 ibm-1208 utf_8 ibm1208 cp1208
UTF16_BigEndian         utf-16be
UTF16_LittleEndian      utf-16le
UTF16_PlatformEndian    iso-10646-ucs-2 csUnicode utf16 utf-16 ibm-1200 ibm1200 cp1200 ucs-2
UTF16_OppositeEndian
LATIN_1                 iso-8859-1 iso_8859-1 ibm-819 ibm819 cp819 latin1 latin-1 ascii ascii-7 us-ascii 8859-1 csisolatin1 iso-ir-100 iso_8859-1:1978 ansi_x3.4-1968 ansi_x3.4-1986 iso_646.irv:1991 iso646-us us cp367 csASCII ibm367 iso-8859-1:1987 l1 iso_8859_1 ansi_x3.110-1983 iso8859-1   #!!!!! There's whole lot of names for this - cp367 csASCII etc.
ISO_2022                iso-2022 2022 cp2022 iso2022 iso_2022
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

# Special mapping for S/390 new line characters
ebcdic-xml-us

# Interchange codepages
ibm-912                 iso-8859-2 iso_8859-2 iso8859-2 ibm912 cp912 latin2 8859-2 csisolatin2 iso-ir-101 iso_8859-2:1987 l2 # Central Europe
ibm-913                 iso-8859-3 iso_8859-3 iso8859-3 latin3 cp913 ibm913 8859-3 csisolatin3 iso-ir-109 iso_8859-3:1988 l3 # Maltese Esperanto
ibm-914                 iso-8859-4 iso_8859-4 iso8859-4 latin4 cp914 ibm914 8859-4 csisolatin4 iso-ir-110 iso_8859-4:1988 l4 # Baltic
ibm-915                 iso-8859-5 iso_8859-5 iso8859-5 cyrillic cp915 ibm915 8859-5 csisolatincyrillic iso-ir-144 iso_8859-5:1988 # Cyrillic
ibm-1089                iso-8859-6 iso_8859-6 iso8859-6 arabic cp1089 ibm1089 8859-6 csisolatinarabic iso-ir-127 iso_8859-6:1987 ecma-114 asmo-708   # Arabic
ibm-4909                cp813 iso-8859-7 iso_8859-7 iso8859-7 ibm813 cp813 greek greek8 elot_928 ecma-118 8859-7 csisolatingreek iso-ir-126 iso_8859-7:1987  # ISO Greek (w/ euro update)
ibm-813                 # same as 4909 (w/o euro update)
ibm-916                 iso-8859-8 iso_8859-8 iso8859-8 hebrew cp916 ibm916 8859-8 csisolatinhebrew iso-ir-138 iso_8859-8:1988   # hebrew iso-8859-8i - typo?
ibm-920                 iso-8859-9 iso_8859-9 iso8859-9 ECMA-128 latin5 cp920 ibm920 8859-9 csisolatin5 iso-ir-148 l5 # Turkish
ibm-923                 iso-8859-15 iso_8859-15 iso8859-15 latin9 cp923 ibm923 8859-15 latin0 csisolatin0 csisolatin9       # Latin 9
ibm-1252                windows-1252  cp1252  ibm-1004 cp1004        # Windows Latin 1 We don't have an ibm-5348, so this is a best possible match
ibm-943                 shift_jis csWindows31J sjis shiftjis shift-jis ibm943 cp943 cp932 ms_kanji csshiftjis windows-31j  x-sjis  # japanese. Unicode name is \u30b7\u30d5\u30c8\u7b26\u53f7\u5316\u8868\u73fe Iana says that Windows-31J is an extension to csshiftjis ibm-932 removed
ibm-949                 KS_C_5601-1987 iso-ir-149 KS_C_5601-1989 csKSC56011987 korean ibm949 ksc-5601 ksc_5601 johab ks_x_1001:1992       # KSC-5601-1992, korean
ibm-1370                Big5 csBig5 big-5 x-big5 cp950                # Taiwan Big-5 (w/ euro update)
ibm-950                 # Taiwan Big-5 
ibm-1386                gb_2312-80 iso-ir-58 csISO58GB231280 gb2312-80 gbk chinese gb ibm1386 gb2312  gb2312-1980 cp936 zh_cn # Chinese GBK removed
#ibm-954                euc-jp eucJP ibm-eucJP eucjis extended_unix_code_packed_format_for_japanese cseuckdfmtjapanese x-euc-jp x-eucjp  # Japan EUC Why is this one commented!!!
ibm-970                 euc-kr euckr ibm-eucKR csEUCKR                       # Korean EUC
#ibm-964                euc-tw euctw ibm-eucTW cns11643              # Taiwan EUC
ibm-1361                cp949 ksc korean                              # Korean KSC
ibm-1383                euc-cn euccn ibm-eucCN                       # China EUC
#ibm-1162               tis-620 cp874 windows-874 ms874       # Thai (w/ euro support) #what is the connection between this and the one below!!!
ibm-874                 ibm-1161 #same as 1162 (w/o euro update) ***This is commented out in Helena's

lmb-excp                # special exceptions list for LMBCS algorithm

# Platform codepages
ibm-437                 ibm437 cp437 csPC8CodePage437 437         # PC US
# HSYS:
ibm-850                 IBM850 cp850 850 csPC850Multilingual    # PC latin1
ibm-851                 IBM851 cp851 851 csPC851           # PC DOS Greek (no euro)
ibm-858                 ibm858 cp858  # PC latin1 with Euro cp850 removed
ibm-9044                IBM852 852 csPCp852 cp852            # PC latin2 (w/ euro update) #where should the names go here or below - inconsistency!!!
ibm-852                 # PC latin2 (w/o euro update)
ibm-872                 IBM855 855 csIBM855 cp855            # PC cyrillic (w/ euro update) #where should the names go here or below - inconsistency!!!
ibm-855                 # PC cyrillic (w/o euro update)
ibm-856                 ibm856 cp856            # PC Hebrew (old)
ibm-9049                IBM857 857 csIBM857 cp857            # PC Latin 5 (Turkish) (w/ euro update) #where should the names go here or below - inconsistency!!!
ibm-857                 # PC Latin 5 (w/o euro update)
ibm-859                 ibm859 cp859            # PC Latin 9 (w/ euro update)
ibm-860                 ibm860 cp860 860 csIBM860            # PC Portugal
ibm-861                 ibm861 cp861 861 cp-is csIBM861           # PC Iceland
ibm-867                 ibm867 cp867 862 cp862 cspc862latinhebrew # PC Hebrew (w/ euro update) #where should the names go here or below - inconsistency!!!
ibm-862                 IBM862 # PC Hebrew (w/o euro update)
ibm-863                 ibm863 cp863 863 csIBM863           # PC Canadian French
ibm-17248               IBM864 cp864 csIBM864            # PC Arabic (w/ euro update) #where should the names go here or below - inconsistency!!!
ibm-864                 # PC Arabic (w/o euro update)
ibm-865                 ibm865 cp865 865 csIBM865            # PC Nordic
ibm-808                 cp866 866 csIBM866     # PC Russian (w/ euro update) #where should the names go here or below - inconsistency!!! put IBM866 cp866 866 csIBM866 down
ibm-866                 IBM866 # PC Russian (w/o euro update) added IBM866 cp866 866 csIBM866
ibm-868                 ibm868 cp868 cp-ar csIBM868            # PC Urdu
ibm-9061                IBM869 869 cp-gr csIBM869 cp869            # PC Greek (w/ euro update)
ibm-869                 # PC Greek (w/o euro update)
ibm-878                 koi8-r ibm878 cp878 koi8 cskoi8r  # Russian internet
ibm-901                 cp921 # PC Baltic (w/ euro update) moved cp921 down
ibm-921                 # PC Baltic (w/o euro update) from above
ibm-902                 cp922 # PC Estonian (w/ euro update) moved cp922 down
ibm-922                 # PC Estonian (w/o euro update) from above
ibm-942                 shift_jis78 sjis78 ibm-932 ibm932    # Old s_jis ibm-932 added!
ibm-1038                Adobe-Symbol-Encoding csHPPSMath symbol
ibm-5346                windows-1250  cp1250    # Windows Latin2 (w/ euro update)
ibm-5347                windows-1251  cp1251    # Windows Cyrillic (w/ euro update)
ibm-5349                windows-1253  cp1253    # Windows Greek (w/ euro update)
ibm-5350                windows-1254  cp1254    # Windows Turkish (w/ euro update)
ibm-5351                windows-1255  cp1255    # Windows Hebrew (w/ euro update)
ibm-5352                windows-1256  cp1256    # Windows Arabic (w/ euro update)
ibm-5353                windows-1257  cp1257    # Windows Baltic (w/ euro update)
ibm-5354                windows-1258  cp1258    # Windows Vietnamese (w/ euro update)
ibm-1250                # Windows Latin2 (w/o euro update)
ibm-1251                # Windows Cyrillic (w/o euro update)
ibm-1253                # Windows Greek (w/o euro update)
ibm-1254                # Windows Turkish (w/o euro update)
ibm-1255                # Windows Hebrew (w/o euro update)
ibm-1256                # Windows Arabic (w/o euro update)
ibm-1257                # Windows Baltic (w/o euro update)
ibm-1258                # Windows Vietnamese (w/o euro update)

ibm-1275                macintosh mac csMacintosh          # Apple latin 1
ibm-1276                Adobe-Standard-Encoding csAdobeStandardEncoding
ibm-1277                Adobe-Latin1-Encoding
ibm-1280                macgr                   # Apple Greek
ibm-1281                mactr                   # Apple Turkish
ibm-1282                macce                   # Apple Central Europe
ibm-1283                maccy                   # Apple Cyrillic

ibm-1051                hp-roman8 roman8 r8 csHPRoman8  # HP Latin1

# Added for more euro support

ibm-849                cp1131          # PC Belarus (w/ euro update)
ibm-848                cp1125          # PC Ukraine (w/ euro update)
ibm-5104               cp1008          # 8-bit Arabic (w/ euro update)
ibm-9238               cp1046          # PC Arabic Extended (w/ euro update)
#ibm-1161              cp9066          # PC Thailand (IBM "version) (w/ euro update)
ibm-1362               cp1362          # Korean Windows DBCS (w/ euro update)
ibm-1363               cp1363          # Korean Windows MBCS (w/ euro update)
ibm-5210               cp1114          # PC SBCS Big-5 (w/ euro update)
ibm-21427              cp947           # PC DBCS Big-5 (w/ euro update)

# EBCDIC codepages according to the CDRA

# without Euro
ibm-37                 IBM037 ibm-037 cpibm37 ebcdic-cp-ca ebcdic-cp-wt ebcdic-cp-nl csIBM037 cp37 ebcdic-cp-us cp037 # EBCDIC US
ibm-273                IBM273 csIBM273 ebcdic-de cp273 cpibm273 # EBCDIC Germanay, Austria...
ibm-277                IBM277 EBCDIC-CP-DK EBCDIC-CP-NO csIBM277 ebcdic-dk  cp277 cpibm277 # EBCDIC Denmark...
ibm-278                IBM278 ebcdic-cp-fi ebcdic-cp-se csIBM278 ebcdic-sv  cp278 cpibm278 # EBCDIC Sweden
ibm-280                IBM280 ebcdic-cp-it csIBM280 cp280 cpibm280 # EBCDIC Italy
ibm-284                IBM284 ebcdic-cp-es csIBM284 cp284 cpibm284 # EBCDIC Spain
ibm-285                IBM285 ebcdic-cp-gb csIBM285 ebcdic-gb cp285 cpibm285 # EBCDIC UK Ireland
ibm-290                IBM290 EBCDIC-JP-kana csIBM290 cp290 # host SBCS (Katakana)
ibm-297                IBM297 ebcdic-cp-fr csIBM297 cp297 cpibm297 # EBCDIC France
ibm-420                IBM420 ebcdic-cp-ar1 csIBM420 ibm-420 cp420
ibm-424                IBM424 ebcdic-cp-he csIBM424 cp424 ibm-424
ibm-500                IBM500 cpibm500 csIBM500 cp500 ebcdic-cp-be ebcdic-cp-ch # EBCDIC International Latin1
ibm-803                cp803 # Old EBCDIC Hebrew
ibm-834                cp834 # Korean DBCS Host
ibm-835                cp835 # DBCS T-Ch Host
ibm-871                IBM871 ebcdic-cp-is csIBM871 cpibm871 cp871 # EBCDIC Iceland
ibm-930                cp930 cpibm930   # Japan EBCDIC MIXED
ibm-933                ibm933 cp933 cpibm933           # Korea EBCDIC MIXED 
ibm-935                ibm935 cp935 cpibm935           # China EBCDIC MIXED 
ibm-937                cp937 cpibm937 # Taiwan EBCDIC MIXED
ibm-939                cp939 # Host MBCS (Latin-Kanji)
#ibm-1046              # PC Arabic without EURO
# with Euro
ibm-1390               cpibm1390 # Japan EBCDIC MIXED
ibm-1371               cpibm1371 # Taiwan EBCDIC MIXED
ibm-1047               cpibm1047 # EBCDIC Open systems Latin1
ibm-1123               cpibm1123 # Cyrillic Ukraine EBCDIC
ibm-1140               cpibm1140 ibm1140 # EBCDIC US...
ibm-1141               cpibm1141 ibm1141 # EBCDIC Germanay, Austria...
ibm-1142               cpibm1142 ibm1142 # EBCDIC Denmark...
ibm-1143               cpibm1143 ibm1143 # EBCDIC Sweden
ibm-1144               cpibm1144 ibm1144 # EBCDIC Italy
ibm-1145               cpibm1145 ibm1145 # EBCDIC Spain
ibm-1146               cpibm1146 ibm1146 # EBCDIC UK Ireland
ibm-1147               cpibm1147 ibm1147 # EBCDIC France
ibm-1148               cpibm1148 ibm1148 # EBCDIC International Latin1
ibm-1149               cpibm1149 ibm1149 ebcdic-is # EBCDIC Iceland
ibm-1153               cpibm1153 ibm1153 # EBCDIC latin 2
ibm-1154               cp1025 cpibm1154                         # EBCDIC Cyrillic Multilingual
ibm-1155               IBM1026 csIBM1026 cp1026 cpibm1155       # EBCDIC Turkey
ibm-1156               cp1112 cpibm1156                         # EBCDIC Baltic Multilingual
ibm-1157               cp1122 cpibm1157                         # EBCDIC Estonia
ibm-1158               cp1123 cpibm1158                         # Cyrillic Ukraine EBCDIC
ibm-1159               cp28709         # SBCS T-Ch Host
ibm-1160               cp9030 cpibm1160                         # EBCDIC Thailand
ibm-1164               cp1130 cpibm1164                         # EBCDIC Viet Nam

ibm-1399               # Host MBCS (Latin-Kanji)
ibm-4930               cp4930 # Korean DBCS Host
ibm-1364               cp1364 # Korean Host Mixed
ibm-8482               # host SBCS (Katakana)
ibm-4899               cpibm4899                          # Old EBCDIC Hebrew
ibm-4971               cp875 cpibm4971                          # EBCDIC Greek
ibm-1159               cp28709         # SBCS T-Ch Host
ibm-9027               # DBCS T-Ch Host
ibm-5123               cp1027          # Host Roman Jis
ibm-12712              cpibm12712 ibm12712 ebcdic-he # EBCDIC Hebrew (new sheqel, control charaters update)
ibm-16684              cp300           # Jis + Roman Jis Host
ibm-16804              cpibm16804 ibm16804 ebcdic-ar # EBCDIC Arabic

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

# EBCDIC codepages for S/390, with LF and NL codes swapped

# without Euro
ibm-37-s390        ibm037-s390   # EBCDIC US
ibm-1047-s390      ibm1047-s390  # EBCDIC for S/390 Open Edition

# with Euro
ibm-1140-s390      ibm1140-s390  # EBCDIC US
ibm-1142-s390      ibm1142-s390  # EBCDIC Denmark
ibm-1143-s390      ibm1143-s390  # EBCDIC Sweden
ibm-1144-s390      ibm1144-s390  # EBCDIC Italy
ibm-1145-s390      ibm1145-s390  # EBCDIC Spain
ibm-1146-s390      ibm1146-s390  # EBCDIC UK Ireland
ibm-1147-s390      ibm1147-s390  # EBCDIC France
ibm-1148-s390      ibm1148-s390  # EBCDIC International Latin1
ibm-1149-s390      ibm1149-s390  # EBCDIC Iceland
ibm-1153-s390      ibm1153-s390  # EBCDIC latin 2
ibm-12712-s390     ibm12712-s390 # EBCDIC Hebrew
ibm-16804-s390     ibm16804-s390 # EBCDIC Arabic
