今天在研究chm的格式時,借用chmlib來研究,看到
typedef struct chmheader {
char itsf[4];
ulong version; /* CHMTools only deals with version 3 */
ulong tot_hdrlen; /* 0x60 in version 3 */
ulong unk3; /* always 0x01 */
ulong last_modified; /* format unknown */
ulong langid; /* usually 0x0409 (ENGLISH_US); I’ve seen 0x0407 (GERMAN_GERMAN) */
guid_t unk_guid1; /* 7C01FD10-7BAA-11D0-9E0C-00A0-C922-E6EC */
guid_t unk_guid2; /* 7C01FD11-7BAA-11D0-9E0C-00A0-C922-E6EC */
} chmheader;
我拿一些.chm檔來試,langid有0x040d的,跟說明不同,後來查到Locale IDs Assigned by Microsoft,看到040d是希伯來文ㄝ,看來這類的檔案,可能langid會亂掛,因為那個檔案的內容明明就是英文,不過我用的The_Scriptures.chm,很清楚就是0404就是Chinese – Taiwan,詳細表格資料轉貼於下,以供參考:
Language – Country/Region | LCID Hex | LCID Dec |
Afrikaans – South Africa | 0436 | 1078 |
Albanian – Albania | 041c | 1052 |
Amharic – Ethiopia | 045e | 1118 |
Arabic – Saudi Arabia | 0401 | 1025 |
Arabic – Algeria | 1401 | 5121 |
Arabic – Bahrain | 3c01 | 15361 |
Arabic – Egypt | 0c01 | 3073 |
Arabic – Iraq | 0801 | 2049 |
Arabic – Jordan | 2c01 | 11265 |
Arabic – Kuwait | 3401 | 13313 |
Arabic – Lebanon | 3001 | 12289 |
Arabic – Libya | 1001 | 4097 |
Arabic – Morocco | 1801 | 6145 |
Arabic – Oman | 2001 | 8193 |
Arabic – Qatar | 4001 | 16385 |
Arabic – Syria | 2801 | 10241 |
Arabic – Tunisia | 1c01 | 7169 |
Arabic – U.A.E. | 3801 | 14337 |
Arabic – Yemen | 2401 | 9217 |
Armenian – Armenia | 042b | 1067 |
Assamese | 044d | 1101 |
Azeri (Cyrillic) | 082c | 2092 |
Azeri (Latin) | 042c | 1068 |
Basque | 042d | 1069 |
Belarusian | 0423 | 1059 |
Bengali (India) | 0445 | 1093 |
Bengali (Bangladesh) | 0845 | 2117 |
Bosnian (Bosnia/Herzegovina) | 141A | 5146 |
Bulgarian | 0402 | 1026 |
Burmese | 0455 | 1109 |
Catalan | 0403 | 1027 |
Cherokee – United States | 045c | 1116 |
Chinese – People’s Republic of China | 0804 | 2052 |
Chinese – Singapore | 1004 | 4100 |
Chinese – Taiwan | 0404 | 1028 |
Chinese – Hong Kong SAR | 0c04 | 3076 |
Chinese – Macao SAR | 1404 | 5124 |
Croatian | 041a | 1050 |
Croatian (Bosnia/Herzegovina) | 101a | 4122 |
Czech | 0405 | 1029 |
Danish | 0406 | 1030 |
Divehi | 0465 | 1125 |
Dutch – Netherlands | 0413 | 1043 |
Dutch – Belgium | 0813 | 2067 |
Edo | 0466 | 1126 |
English – United States | 0409 | 1033 |
English – United Kingdom | 0809 | 2057 |
English – Australia | 0c09 | 3081 |
English – Belize | 2809 | 10249 |
English – Canada | 1009 | 4105 |
English – Caribbean | 2409 | 9225 |
English – Hong Kong SAR | 3c09 | 15369 |
English – India | 4009 | 16393 |
English – Indonesia | 3809 | 14345 |
English – Ireland | 1809 | 6153 |
English – Jamaica | 2009 | 8201 |
English – Malaysia | 4409 | 17417 |
English – New Zealand | 1409 | 5129 |
English – Philippines | 3409 | 13321 |
English – Singapore | 4809 | 18441 |
English – South Africa | 1c09 | 7177 |
English – Trinidad | 2c09 | 11273 |
English – Zimbabwe | 3009 | 12297 |
Estonian | 0425 | 1061 |
Faroese | 0438 | 1080 |
Farsi | 0429 | 1065 |
Filipino | 0464 | 1124 |
Finnish | 040b | 1035 |
French – France | 040c | 1036 |
French – Belgium | 080c | 2060 |
French – Cameroon | 2c0c | 11276 |
French – Canada | 0c0c | 3084 |
French – Democratic Rep. of Congo | 240c | 9228 |
French – Cote d’Ivoire | 300c | 12300 |
French – Haiti | 3c0c | 15372 |
French – Luxembourg | 140c | 5132 |
French – Mali | 340c | 13324 |
French – Monaco | 180c | 6156 |
French – Morocco | 380c | 14348 |
French – North Africa | e40c | 58380 |
French – Reunion | 200c | 8204 |
French – Senegal | 280c | 10252 |
French – Switzerland | 100c | 4108 |
French – West Indies | 1c0c | 7180 |
Frisian – Netherlands | 0462 | 1122 |
Fulfulde – Nigeria | 0467 | 1127 |
FYRO Macedonian | 042f | 1071 |
Gaelic (Ireland) | 083c | 2108 |
Gaelic (Scotland) | 043c | 1084 |
Galician | 0456 | 1110 |
Georgian | 0437 | 1079 |
German – Germany | 0407 | 1031 |
German – Austria | 0c07 | 3079 |
German – Liechtenstein | 1407 | 5127 |
German – Luxembourg | 1007 | 4103 |
German – Switzerland | 0807 | 2055 |
Greek | 0408 | 1032 |
Guarani – Paraguay | 0474 | 1140 |
Gujarati | 0447 | 1095 |
Hausa – Nigeria | 0468 | 1128 |
Hawaiian – United States | 0475 | 1141 |
Hebrew | 040d | 1037 |
Hindi | 0439 | 1081 |
Hungarian | 040e | 1038 |
Ibibio – Nigeria | 0469 | 1129 |
Icelandic | 040f | 1039 |
Igbo – Nigeria | 0470 | 1136 |
Indonesian | 0421 | 1057 |
Inuktitut | 045d | 1117 |
Italian – Italy | 0410 | 1040 |
Italian – Switzerland | 0810 | 2064 |
Japanese | 0411 | 1041 |
Kannada | 044b | 1099 |
Kanuri – Nigeria | 0471 | 1137 |
Kashmiri | 0860 | 2144 |
Kashmiri (Arabic) | 0460 | 1120 |
Kazakh | 043f | 1087 |
Khmer | 0453 | 1107 |
Konkani | 0457 | 1111 |
Korean | 0412 | 1042 |
Kyrgyz (Cyrillic) | 0440 | 1088 |
Lao | 0454 | 1108 |
Latin | 0476 | 1142 |
Latvian | 0426 | 1062 |
Lithuanian | 0427 | 1063 |
Malay – Malaysia | 043e | 1086 |
Malay – Brunei Darussalam | 083e | 2110 |
Malayalam | 044c | 1100 |
Maltese | 043a | 1082 |
Manipuri | 0458 | 1112 |
Maori – New Zealand | 0481 | 1153 |
Marathi | 044e | 1102 |
Mongolian (Cyrillic) | 0450 | 1104 |
Mongolian (Mongolian) | 0850 | 2128 |
Nepali | 0461 | 1121 |
Nepali – India | 0861 | 2145 |
Norwegian (Bokmål) | 0414 | 1044 |
Norwegian (Nynorsk) | 0814 | 2068 |
Oriya | 0448 | 1096 |
Oromo | 0472 | 1138 |
Papiamentu | 0479 | 1145 |
Pashto | 0463 | 1123 |
Polish | 0415 | 1045 |
Portuguese – Brazil | 0416 | 1046 |
Portuguese – Portugal | 0816 | 2070 |
Punjabi | 0446 | 1094 |
Punjabi (Pakistan) | 0846 | 2118 |
Quecha – Bolivia | 046B | 1131 |
Quecha – Ecuador | 086B | 2155 |
Quecha – Peru | 0C6B | 3179 |
Rhaeto-Romanic | 0417 | 1047 |
Romanian | 0418 | 1048 |
Romanian – Moldava | 0818 | 2072 |
Russian | 0419 | 1049 |
Russian – Moldava | 0819 | 2073 |
Sami (Lappish) | 043b | 1083 |
Sanskrit | 044f | 1103 |
Sepedi | 046c | 1132 |
Serbian (Cyrillic) | 0c1a | 3098 |
Serbian (Latin) | 081a | 2074 |
Sindhi – India | 0459 | 1113 |
Sindhi – Pakistan | 0859 | 2137 |
Sinhalese – Sri Lanka | 045b | 1115 |
Slovak | 041b | 1051 |
Slovenian | 0424 | 1060 |
Somali | 0477 | 1143 |
Sorbian | 042e | 1070 |
Spanish – Spain (Modern Sort) | 0c0a | 3082 |
Spanish – Spain (Traditional Sort) | 040a | 1034 |
Spanish – Argentina | 2c0a | 11274 |
Spanish – Bolivia | 400a | 16394 |
Spanish – Chile | 340a | 13322 |
Spanish – Colombia | 240a | 9226 |
Spanish – Costa Rica | 140a | 5130 |
Spanish – Dominican Republic | 1c0a | 7178 |
Spanish – Ecuador | 300a | 12298 |
Spanish – El Salvador | 440a | 17418 |
Spanish – Guatemala | 100a | 4106 |
Spanish – Honduras | 480a | 18442 |
Spanish – Latin America | 580a | 58378 |
Spanish – Mexico | 080a | 2058 |
Spanish – Nicaragua | 4c0a | 19466 |
Spanish – Panama | 180a | 6154 |
Spanish – Paraguay | 3c0a | 15370 |
Spanish – Peru | 280a | 10250 |
Spanish – Puerto Rico | 500a | 20490 |
Spanish – United States | 540a | 21514 |
Spanish – Uruguay | 380a | 14346 |
Spanish – Venezuela | 200a | 8202 |
Sutu | 0430 | 1072 |
Swahili | 0441 | 1089 |
Swedish | 041d | 1053 |
Swedish – Finland | 081d | 2077 |
Syriac | 045a | 1114 |
Tajik | 0428 | 1064 |
Tamazight (Arabic) | 045f | 1119 |
Tamazight (Latin) | 085f | 2143 |
Tamil | 0449 | 1097 |
Tatar | 0444 | 1092 |
Telugu | 044a | 1098 |
Thai | 041e | 1054 |
Tibetan – Bhutan | 0851 | 2129 |
Tibetan – People’s Republic of China | 0451 | 1105 |
Tigrigna – Eritrea | 0873 | 2163 |
Tigrigna – Ethiopia | 0473 | 1139 |
Tsonga | 0431 | 1073 |
Tswana | 0432 | 1074 |
Turkish | 041f | 1055 |
Turkmen | 0442 | 1090 |
Uighur – China | 0480 | 1152 |
Ukrainian | 0422 | 1058 |
Urdu | 0420 | 1056 |
Urdu – India | 0820 | 2080 |
Uzbek (Cyrillic) | 0843 | 2115 |
Uzbek (Latin) | 0443 | 1091 |
Venda | 0433 | 1075 |
Vietnamese | 042a | 1066 |
Welsh | 0452 | 1106 |
Xhosa | 0434 | 1076 |
Yi | 0478 | 1144 |
Yiddish | 043d | 1085 |
Yoruba | 046a | 1130 |
Zulu | 0435 | 1077 |
HID (Human Interface Device) | 04ff | 1279 |