2
0

codepage.odin 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298
  1. // +build windows
  2. package sys_windows
  3. // https://learn.microsoft.com/en-us/windows/win32/intl/code-page-identifiers
  4. CODEPAGE :: enum UINT {
  5. // Default to ANSI code page
  6. ACP = CP_ACP,
  7. // Default to OEM code page
  8. OEMCP = CP_OEMCP,
  9. // Default to MAC code page
  10. MACCP = CP_MACCP,
  11. // Current thread's ANSI code page
  12. THREAD_ACP = CP_THREAD_ACP,
  13. // Symbol translations
  14. SYMBOL = CP_SYMBOL,
  15. // IBM EBCDIC US-Canada
  16. IBM037 = 037,
  17. // OEM United States
  18. IBM437 = 437,
  19. // IBM EBCDIC International
  20. IBM500 = 500,
  21. // Arabic (ASMO 708)
  22. ASMO_708 = 708,
  23. // Arabic (Transparent ASMO); Arabic (DOS)
  24. DOS_720 = 720,
  25. // OEM Greek (formerly 437G); Greek (DOS)
  26. IBM737 = 737,
  27. // OEM Baltic; Baltic (DOS)
  28. IBM775 = 775,
  29. // OEM Multilingual Latin 1; Western European (DOS)
  30. IBM850 = 850,
  31. // OEM Latin 2; Central European (DOS)
  32. IBM852 = 852,
  33. // OEM Cyrillic (primarily Russian)
  34. IBM855 = 855,
  35. // OEM Turkish; Turkish (DOS)
  36. IBM857 = 857,
  37. // OEM Multilingual Latin 1 + Euro symbol
  38. IBM00858 = 858,
  39. // OEM Portuguese; Portuguese (DOS)
  40. IBM860 = 860,
  41. // OEM Icelandic; Icelandic (DOS)
  42. IBM861 = 861,
  43. // OEM Hebrew; Hebrew (DOS)
  44. DOS_862 = 862,
  45. // OEM French Canadian; French Canadian (DOS)
  46. IBM863 = 863,
  47. // OEM Arabic; Arabic (864)
  48. IBM864 = 864,
  49. // OEM Nordic; Nordic (DOS)
  50. IBM865 = 865,
  51. // OEM Russian; Cyrillic (DOS)
  52. CP866 = 866,
  53. // OEM Modern Greek; Greek, Modern (DOS)
  54. IBM869 = 869,
  55. // IBM EBCDIC Multilingual/ROECE (Latin 2); IBM EBCDIC Multilingual Latin 2
  56. IBM870 = 870,
  57. // Thai (Windows)
  58. WINDOWS_874 = 874,
  59. // IBM EBCDIC Greek Modern
  60. CP875 = 875,
  61. // ANSI/OEM Japanese; Japanese (Shift-JIS)
  62. SHIFT_JIS = 932,
  63. // ANSI/OEM Simplified Chinese (PRC, Singapore); Chinese Simplified (GB2312)
  64. GB2312 = 936,
  65. // ANSI/OEM Korean (Unified Hangul Code)
  66. KS_C_5601_1987 = 949,
  67. // ANSI/OEM Traditional Chinese (Taiwan; Hong Kong SAR, PRC); Chinese Traditional (Big5)
  68. BIG5 = 950,
  69. // IBM EBCDIC Turkish (Latin 5)
  70. IBM1026 = 1026,
  71. // IBM EBCDIC Latin 1/Open System
  72. IBM01047 = 1047,
  73. // IBM EBCDIC US-Canada (037 + Euro symbol); IBM EBCDIC (US-Canada-Euro)
  74. IBM01140 = 1140,
  75. // IBM EBCDIC Germany (20273 + Euro symbol); IBM EBCDIC (Germany-Euro)
  76. IBM01141 = 1141,
  77. // IBM EBCDIC Denmark-Norway (20277 + Euro symbol); IBM EBCDIC (Denmark-Norway-Euro)
  78. IBM01142 = 1142,
  79. // IBM EBCDIC Finland-Sweden (20278 + Euro symbol); IBM EBCDIC (Finland-Sweden-Euro)
  80. IBM01143 = 1143,
  81. // IBM EBCDIC Italy (20280 + Euro symbol); IBM EBCDIC (Italy-Euro)
  82. IBM01144 = 1144,
  83. // IBM EBCDIC Latin America-Spain (20284 + Euro symbol); IBM EBCDIC (Spain-Euro)
  84. IBM01145 = 1145,
  85. // IBM EBCDIC United Kingdom (20285 + Euro symbol); IBM EBCDIC (UK-Euro)
  86. IBM01146 = 1146,
  87. // IBM EBCDIC France (20297 + Euro symbol); IBM EBCDIC (France-Euro)
  88. IBM01147 = 1147,
  89. // IBM EBCDIC International (500 + Euro symbol); IBM EBCDIC (International-Euro)
  90. IBM01148 = 1148,
  91. // IBM EBCDIC Icelandic (20871 + Euro symbol); IBM EBCDIC (Icelandic-Euro)
  92. IBM01149 = 1149,
  93. // Unicode UTF-16, little endian byte order (BMP of ISO 10646); available only to managed applications
  94. UTF16 = 1200,
  95. // Unicode UTF-16, big endian byte order; available only to managed applications
  96. UNICODEFFFE = 1201,
  97. // ANSI Central European; Central European (Windows)
  98. WINDOWS_1250 = 1250,
  99. // ANSI Cyrillic; Cyrillic (Windows)
  100. WINDOWS_1251 = 1251,
  101. // ANSI Latin 1; Western European (Windows)
  102. WINDOWS_1252 = 1252,
  103. // ANSI Greek; Greek (Windows)
  104. WINDOWS_1253 = 1253,
  105. // ANSI Turkish; Turkish (Windows)
  106. WINDOWS_1254 = 1254,
  107. // ANSI Hebrew; Hebrew (Windows)
  108. WINDOWS_1255 = 1255,
  109. // ANSI Arabic; Arabic (Windows)
  110. WINDOWS_1256 = 1256,
  111. // ANSI Baltic; Baltic (Windows)
  112. WINDOWS_1257 = 1257,
  113. // ANSI/OEM Vietnamese; Vietnamese (Windows)
  114. WINDOWS_1258 = 1258,
  115. // Korean (Johab)
  116. JOHAB = 1361,
  117. // MAC Roman; Western European (Mac)
  118. MACINTOSH = 10000,
  119. // Japanese (Mac)
  120. X_MAC_JAPANESE = 10001,
  121. // MAC Traditional Chinese (Big5); Chinese Traditional (Mac)
  122. X_MAC_CHINESETRAD = 10002,
  123. // Korean (Mac)
  124. X_MAC_KOREAN = 10003,
  125. // Arabic (Mac)
  126. X_MAC_ARABIC = 10004,
  127. // Hebrew (Mac)
  128. X_MAC_HEBREW = 10005,
  129. // Greek (Mac)
  130. X_MAC_GREEK = 10006,
  131. // Cyrillic (Mac)
  132. X_MAC_CYRILLIC = 10007,
  133. // MAC Simplified Chinese (GB 2312); Chinese Simplified (Mac)
  134. X_MAC_CHINESESIMP = 10008,
  135. // Romanian (Mac)
  136. X_MAC_ROMANIAN = 10010,
  137. // Ukrainian (Mac)
  138. X_MAC_UKRAINIAN = 10017,
  139. // Thai (Mac)
  140. X_MAC_THAI = 10021,
  141. // MAC Latin 2; Central European (Mac)
  142. X_MAC_CE = 10029,
  143. // Icelandic (Mac)
  144. X_MAC_ICELANDIC = 10079,
  145. // Turkish (Mac)
  146. X_MAC_TURKISH = 10081,
  147. // Croatian (Mac)
  148. X_MAC_CROATIAN = 10082,
  149. // Unicode UTF-32, little endian byte order; available only to managed applications
  150. UTF32 = 12000,
  151. // Unicode UTF-32, big endian byte order; available only to managed applications
  152. UTF32BE = 12001,
  153. // CNS Taiwan; Chinese Traditional (CNS)
  154. X_CHINESE_CNS = 20000,
  155. // TCA Taiwan
  156. X_CP20001 = 20001,
  157. // Eten Taiwan; Chinese Traditional (Eten)
  158. X_CHINESE_ETEN = 20002,
  159. // IBM5550 Taiwan
  160. X_CP20003 = 20003,
  161. // TeleText Taiwan
  162. X_CP20004 = 20004,
  163. // Wang Taiwan
  164. X_CP20005 = 20005,
  165. // IA5 (IRV International Alphabet No. 5, 7-bit); Western European (IA5)
  166. X_IA5 = 20105,
  167. // IA5 German (7-bit)
  168. X_IA5_GERMAN = 20106,
  169. // IA5 Swedish (7-bit)
  170. X_IA5_SWEDISH = 20107,
  171. // IA5 Norwegian (7-bit)
  172. X_IA5_NORWEGIAN = 20108,
  173. // US-ASCII (7-bit)
  174. US_ASCII = 20127,
  175. // T.61
  176. X_CP20261 = 20261,
  177. // ISO 6937 Non-Spacing Accent
  178. X_CP20269 = 20269,
  179. // IBM EBCDIC Germany
  180. IBM273 = 20273,
  181. // IBM EBCDIC Denmark-Norway
  182. IBM277 = 20277,
  183. // IBM EBCDIC Finland-Sweden
  184. IBM278 = 20278,
  185. // IBM EBCDIC Italy
  186. IBM280 = 20280,
  187. // IBM EBCDIC Latin America-Spain
  188. IBM284 = 20284,
  189. // IBM EBCDIC United Kingdom
  190. IBM285 = 20285,
  191. // IBM EBCDIC Japanese Katakana Extended
  192. IBM290 = 20290,
  193. // IBM EBCDIC France
  194. IBM297 = 20297,
  195. // IBM EBCDIC Arabic
  196. IBM420 = 20420,
  197. // IBM EBCDIC Greek
  198. IBM423 = 20423,
  199. // IBM EBCDIC Hebrew
  200. IBM424 = 20424,
  201. // IBM EBCDIC Korean Extended
  202. X_EBCDIC_KOREANEXTENDED = 20833,
  203. // IBM EBCDIC Thai
  204. IBM_THAI = 20838,
  205. // Russian (KOI8-R); Cyrillic (KOI8-R)
  206. KOI8_R = 20866,
  207. // IBM EBCDIC Icelandic
  208. IBM871 = 20871,
  209. // IBM EBCDIC Cyrillic Russian
  210. IBM880 = 20880,
  211. // IBM EBCDIC Turkish
  212. IBM905 = 20905,
  213. // IBM EBCDIC Latin 1/Open System (1047 + Euro symbol)
  214. IBM00924 = 20924,
  215. // Japanese (JIS 0208-1990 and 0212-1990)
  216. EUC_JP = 20932,
  217. // Simplified Chinese (GB2312); Chinese Simplified (GB2312-80)
  218. X_CP20936 = 20936,
  219. // Korean Wansung
  220. X_CP20949 = 20949,
  221. // IBM EBCDIC Cyrillic Serbian-Bulgarian
  222. CP1025 = 21025,
  223. // Ukrainian (KOI8-U); Cyrillic (KOI8-U)
  224. KOI8_U = 21866,
  225. // ISO 8859-1 Latin 1; Western European (ISO)
  226. ISO_8859_1 = 28591,
  227. // ISO 8859-2 Central European; Central European (ISO)
  228. ISO_8859_2 = 28592,
  229. // ISO 8859-3 Latin 3
  230. ISO_8859_3 = 28593,
  231. // ISO 8859-4 Baltic
  232. ISO_8859_4 = 28594,
  233. // ISO 8859-5 Cyrillic
  234. ISO_8859_5 = 28595,
  235. // ISO 8859-6 Arabic
  236. ISO_8859_6 = 28596,
  237. // ISO 8859-7 Greek
  238. ISO_8859_7 = 28597,
  239. // ISO 8859-8 Hebrew; Hebrew (ISO-Visual)
  240. ISO_8859_8 = 28598,
  241. // ISO 8859-9 Turkish
  242. ISO_8859_9 = 28599,
  243. // ISO 8859-13 Estonian
  244. ISO_8859_13 = 28603,
  245. // ISO 8859-15 Latin 9
  246. ISO_8859_15 = 28605,
  247. // Europa 3
  248. X_EUROPA = 29001,
  249. // ISO 8859-8 Hebrew; Hebrew (ISO-Logical)
  250. ISO_8859_8_I = 38598,
  251. // ISO 2022 Japanese with no halfwidth Katakana; Japanese (JIS)
  252. ISO_2022_JP = 50220,
  253. // ISO 2022 Japanese with halfwidth Katakana; Japanese (JIS-Allow 1 byte Kana)
  254. CSISO2022JP = 50221,
  255. // ISO 2022 Japanese JIS X 0201-1989; Japanese (JIS-Allow 1 byte Kana - SO/SI)
  256. ISO_2022_2_JP = 50222,
  257. // ISO 2022 Korean
  258. ISO_2022_KR = 50225,
  259. // ISO 2022 Simplified Chinese; Chinese Simplified (ISO 2022)
  260. X_CP50227 = 50227,
  261. // EUC Japanese
  262. EUC_JP_2 = 51932,
  263. // EUC Simplified Chinese; Chinese Simplified (EUC)
  264. EUC_CN = 51936,
  265. // EUC Korean
  266. EUC_KR = 51949,
  267. // HZ-GB2312 Simplified Chinese; Chinese Simplified (HZ)
  268. HZ_GB_2312 = 52936,
  269. // **Windows XP and later:** GB18030 Simplified Chinese (4 byte); Chinese Simplified (GB18030)
  270. GB18030 = 54936,
  271. // ISCII Devanagari
  272. X_ISCII_DE = 57002,
  273. // ISCII Bangla
  274. X_ISCII_BE = 57003,
  275. // ISCII Tamil
  276. X_ISCII_TA = 57004,
  277. // ISCII Telugu
  278. X_ISCII_TE = 57005,
  279. // ISCII Assamese
  280. X_ISCII_AS = 57006,
  281. // ISCII Odia
  282. X_ISCII_OR = 57007,
  283. // ISCII Kannada
  284. X_ISCII_KA = 57008,
  285. // ISCII Malayalam
  286. X_ISCII_MA = 57009,
  287. // ISCII Gujarati
  288. X_ISCII_GU = 57010,
  289. // ISCII Punjabi
  290. X_ISCII_PA = 57011,
  291. // Unicode (UTF-7)
  292. UTF7 = CP_UTF7, /*65000*/
  293. // Unicode (UTF-8)
  294. UTF8 = CP_UTF8, /*65001*/
  295. }