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
6    it under the terms of the GNU General Public License as published by
7    the Free Software Foundation; either version 3, 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
13    GNU General Public License for more details.
14 
15    You should have received a copy of the GNU General Public License along
16    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
23 extern "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.  */
32 extern 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