1/* Determine a canonical name for the current locale's character encoding.
2   Copyright (C) 2000-2003, 2009-2018 Free Software Foundation, Inc.
3   This file is part of the GNU CHARSET Library.
4
5   This program is free software; you can redistribute it and/or modify it
6   under the terms of the GNU Library General Public License as published
7   by the Free Software Foundation; either version 2, or (at your option)
8   any later version.
9
10   This program is distributed in the hope that it will be useful,
11   but WITHOUT ANY WARRANTY; without even the implied warranty of
12   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13   Library General Public License for more details.
14
15   You should have received a copy of the GNU Library General Public License
16   along with this program; if not, see <https://www.gnu.org/licenses/>.  */
17
18#ifndef _LOCALCHARSET_H
19#define _LOCALCHARSET_H
20
21
22#ifdef __cplusplus
23extern "C" {
24#endif
25
26
27/* Determine the current locale's character encoding, and canonicalize it
28   into one of the canonical names listed below.
29   The result must not be freed; it is statically allocated.
30   If the canonical name cannot be determined, the result is a non-canonical
31   name.  */
32extern const char * locale_charset (void);
33
34/* About GNU canonical names for character encodings:
35
36   Every canonical name must be supported by GNU libiconv.  Support by GNU libc
37   is also desirable.
38
39   The name is case insensitive.  Usually an upper case MIME charset name is
40   preferred.
41
42   The current list of these GNU canonical names is:
43
44       name              MIME?             used by which systems
45                                    (darwin = Mac OS X, windows = native Windows)
46
47   ASCII, ANSI_X3.4-1968       glibc solaris freebsd netbsd darwin minix cygwin
48   ISO-8859-1              Y   glibc aix hpux irix osf solaris freebsd netbsd openbsd darwin cygwin
49   ISO-8859-2              Y   glibc aix hpux irix osf solaris freebsd netbsd openbsd darwin cygwin
50   ISO-8859-3              Y   glibc solaris cygwin
51   ISO-8859-4              Y   hpux osf solaris freebsd netbsd openbsd darwin
52   ISO-8859-5              Y   glibc aix hpux irix osf solaris freebsd netbsd openbsd darwin cygwin
53   ISO-8859-6              Y   glibc aix hpux solaris cygwin
54   ISO-8859-7              Y   glibc aix hpux irix osf solaris freebsd netbsd openbsd darwin cygwin
55   ISO-8859-8              Y   glibc aix hpux osf solaris cygwin
56   ISO-8859-9              Y   glibc aix hpux irix osf solaris freebsd darwin cygwin
57   ISO-8859-13                 glibc hpux solaris freebsd netbsd openbsd darwin cygwin
58   ISO-8859-14                 glibc cygwin
59   ISO-8859-15                 glibc aix irix osf solaris freebsd netbsd openbsd darwin cygwin
60   KOI8-R                  Y   glibc hpux solaris freebsd netbsd openbsd darwin
61   KOI8-U                  Y   glibc freebsd netbsd openbsd darwin cygwin
62   KOI8-T                      glibc
63   CP437                       dos
64   CP775                       dos
65   CP850                       aix osf dos
66   CP852                       dos
67   CP855                       dos
68   CP856                       aix
69   CP857                       dos
70   CP861                       dos
71   CP862                       dos
72   CP864                       dos
73   CP865                       dos
74   CP866                       freebsd netbsd openbsd darwin dos
75   CP869                       dos
76   CP874                       windows dos
77   CP922                       aix
78   CP932                       aix cygwin windows dos
79   CP943                       aix
80   CP949                       osf darwin windows dos
81   CP950                       windows dos
82   CP1046                      aix
83   CP1124                      aix
84   CP1125                      dos
85   CP1129                      aix
86   CP1131                      freebsd darwin
87   CP1250                      windows
88   CP1251                      glibc hpux solaris freebsd netbsd openbsd darwin cygwin windows
89   CP1252                      aix windows
90   CP1253                      windows
91   CP1254                      windows
92   CP1255                      glibc windows
93   CP1256                      windows
94   CP1257                      windows
95   GB2312                  Y   glibc aix hpux irix solaris freebsd netbsd darwin cygwin
96   EUC-JP                  Y   glibc aix hpux irix osf solaris freebsd netbsd darwin cygwin
97   EUC-KR                  Y   glibc aix hpux irix osf solaris freebsd netbsd darwin cygwin
98   EUC-TW                      glibc aix hpux irix osf solaris netbsd
99   BIG5                    Y   glibc aix hpux osf solaris freebsd netbsd darwin cygwin
100   BIG5-HKSCS                  glibc hpux solaris netbsd darwin
101   GBK                         glibc aix osf solaris freebsd darwin cygwin windows dos
102   GB18030                     glibc hpux solaris freebsd netbsd darwin
103   SHIFT_JIS               Y   hpux osf solaris freebsd netbsd darwin
104   JOHAB                       glibc solaris windows
105   TIS-620                     glibc aix hpux osf solaris cygwin
106   VISCII                  Y   glibc
107   TCVN5712-1                  glibc
108   ARMSCII-8                   glibc freebsd netbsd darwin
109   GEORGIAN-PS                 glibc cygwin
110   PT154                       glibc netbsd cygwin
111   HP-ROMAN8                   hpux
112   HP-ARABIC8                  hpux
113   HP-GREEK8                   hpux
114   HP-HEBREW8                  hpux
115   HP-TURKISH8                 hpux
116   HP-KANA8                    hpux
117   DEC-KANJI                   osf
118   DEC-HANYU                   osf
119   UTF-8                   Y   glibc aix hpux osf solaris netbsd darwin cygwin
120
121   Note: Names which are not marked as being a MIME name should not be used in
122   Internet protocols for information interchange (mail, news, etc.).
123
124   Note: ASCII and ANSI_X3.4-1968 are synonymous canonical names.  Applications
125   must understand both names and treat them as equivalent.
126 */
127
128
129#ifdef __cplusplus
130}
131#endif
132
133
134#endif /* _LOCALCHARSET_H */
135