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