diff --git a/Notepad3.sln b/Notepad3.sln index 6db969464..1c5fd43f1 100644 --- a/Notepad3.sln +++ b/Notepad3.sln @@ -212,6 +212,9 @@ EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "language", "language", "{8FD783D5-8709-432D-A88E-6E3073AFF220}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "language", "language", "{8C28F8E6-5B4E-4233-B5C7-5A903596AEB2}" + ProjectSection(SolutionItems) = preProject + language\language_menus.hpp = language\language_menus.hpp + EndProjectSection EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution diff --git a/Versions/build.txt b/Versions/build.txt index 8f8453a8f..712cd79a3 100644 --- a/Versions/build.txt +++ b/Versions/build.txt @@ -1 +1 @@ -1648 +1650 diff --git a/ced/ced/util/encodings/encodings.cc b/ced/ced/util/encodings/encodings.cc index f5b061afd..1fae8b228 100644 --- a/ced/ced/util/encodings/encodings.cc +++ b/ced/ced/util/encodings/encodings.cc @@ -1,4 +1,4 @@ -// Copyright 2016 Google Inc. +// Copyright 2016 Google Inc. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -149,8 +149,8 @@ static const EncodingInfo kEncodingInfoTable[] = { { "ISO-2022-KR", "ISO-2022-KR", KOREAN_EUC_KR}, // due to potential confusion with HTML syntax chars { "GBK", "GBK", GBK}, - { "GB18030", "GB18030", GBK}, - // because gb18030 is not widely supported + { "GB18030", "GB18030", GB18030}, + // { "GB18030", "GB18030", GBK}, // because gb18030 is not widely supported { "BIG5_HKSCS", "BIG5-HKSCS", CHINESE_BIG5}, // because Big5-HKSCS is not widely supported { "ISO_2022_CN", "ISO-2022-CN", CHINESE_GB}, diff --git a/language/language_menus.hpp b/language/language_menus.hpp new file mode 100644 index 000000000..690e5371a --- /dev/null +++ b/language/language_menus.hpp @@ -0,0 +1,23 @@ +#ifndef _LANGUAGE_MENUS_H_ +#define _LANGUAGE_MENUS_H_ + +static LNG_MENU_T s_LanguageMenu[] = +{ + { MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US), L"English (United States)\t\t\t[%s]" }, + { MAKELANGID(LANG_AFRIKAANS, SUBLANG_AFRIKAANS_SOUTH_AFRICA), L"Afrikaans (Suid-Afrika)\t\t\t[%s]" }, + { MAKELANGID(LANG_BELARUSIAN, SUBLANG_BELARUSIAN_BELARUS), L"Беларускі (Беларусь)\t\t\t[%s]" }, + { MAKELANGID(LANG_GERMAN, SUBLANG_GERMAN), L"Deutsch (Deutschland)\t\t\t[%s]" }, + { MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_UK), L"English (United Kingdom)\t\t\t[%s]" }, + { MAKELANGID(LANG_SPANISH, SUBLANG_SPANISH_MODERN), L"Español (España)\t\t\t[%s]" }, + { MAKELANGID(LANG_FRENCH, SUBLANG_FRENCH), L"Français (France)\t\t\t[%s]" }, + { MAKELANGID(LANG_HUNGARIAN, SUBLANG_HUNGARIAN_HUNGARY), L"Magyar (Magyarország)\t\t\t[%s]" }, + { MAKELANGID(LANG_ITALIAN, SUBLANG_ITALIAN), L"Italiano (Italia)\t\t\t[%s]" }, + { MAKELANGID(LANG_JAPANESE, SUBLANG_JAPANESE_JAPAN), L"日本語(日本)\t\t\t[%s]" }, + { MAKELANGID(LANG_KOREAN, SUBLANG_KOREAN), L"한국어 (대한민국)\t\t\t[%s]" }, + { MAKELANGID(LANG_DUTCH, SUBLANG_DUTCH), L"Nederlands (Nederland)\t\t\t[%s]" }, + { MAKELANGID(LANG_PORTUGUESE, SUBLANG_PORTUGUESE_BRAZILIAN), L"Português (Brasil)\t\t\t[%s]" }, + { MAKELANGID(LANG_RUSSIAN, SUBLANG_RUSSIAN_RUSSIA), L"Русский (Pоссия)\t\t\t[%s]" }, + { MAKELANGID(LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED), L"中文(汉斯)\t\t\t[%s]" } +}; + +#endif //_LANGUAGE_MENUS_H_ diff --git a/language/np3_af_za/strings_af_za.rc b/language/np3_af_za/strings_af_za.rc index c6ed784e3..76c063e9e 100644 --- a/language/np3_af_za/strings_af_za.rc +++ b/language/np3_af_za/strings_af_za.rc @@ -200,21 +200,6 @@ END STRINGTABLE BEGIN IDS_MUI_MENU_LANGUAGE "Taal" - IDS_MUI_LANG_EN_US "Engels (Verenigde State)\t\t\t[%s]" - IDS_MUI_LANG_AF_ZA "Afrikaans (Suid-Afrika)\t\t\t[%s]" - IDS_MUI_LANG_BE_BY "Wit-Russies (Wit-Rusland)\t\t\t[%s]" - IDS_MUI_LANG_DE_DE "Duits (Duitsland)\t\t\t[%s]" - IDS_MUI_LANG_EN_GB "Engels (Verenigde Koninkryk)\t\t\t[%s]" - IDS_MUI_LANG_ES_ES "Spaans (Spanje)\t\t\t[%s]" - IDS_MUI_LANG_FR_FR "Frans (Frankryk)\t\t\t[%s]" - IDS_MUI_LANG_HU_HU "Hongaars (Hongarye)\t\t\t[%s]" - IDS_MUI_LANG_IT_IT "Italiaans (Itali)\t\t\t[%s]" - IDS_MUI_LANG_JP_JP "Japannese (Japan)\t\t\t[%s]" - IDS_MUI_LANG_KO_KR "Koreaanse (Korea)\t\t\t[%s]" - IDS_MUI_LANG_NL_NL "Afrikaans (Nederland)\t\t\t[%s]" - IDS_MUI_LANG_PT_BR "Portugees (Brasili)\t\t\t[%s]" - IDS_MUI_LANG_RU_RU "Russies (Rusland)\t\t\t[%s]" - IDS_MUI_LANG_ZH_CN "Sjinees (Hans)\t\t\t[%s]" END STRINGTABLE diff --git a/language/np3_be_by/strings_be_by.rc b/language/np3_be_by/strings_be_by.rc index 581848a7b..ef9b31cc7 100644 --- a/language/np3_be_by/strings_be_by.rc +++ b/language/np3_be_by/strings_be_by.rc @@ -201,21 +201,6 @@ END STRINGTABLE BEGIN IDS_MUI_MENU_LANGUAGE "" - IDS_MUI_LANG_EN_US " ()\t\t\t[%s]" - IDS_MUI_LANG_AF_ZA " ( )\t\t\t[%s]" - IDS_MUI_LANG_BE_BY " ()\t\t\t[%s]" - IDS_MUI_LANG_DE_DE " ()\t\t\t[%s]" - IDS_MUI_LANG_EN_GB " ()\t\t\t[%s]" - IDS_MUI_LANG_ES_ES " ()\t\t\t[%s]" - IDS_MUI_LANG_FR_FR " ()\t\t\t[%s]" - IDS_MUI_LANG_HU_HU " ()\t\t\t[%s]" - IDS_MUI_LANG_IT_IT " ()\t\t\t[%s]" - IDS_MUI_LANG_JP_JP " ()\t\t\t[%s]" - IDS_MUI_LANG_KO_KR " ()\t\t\t[%s]" - IDS_MUI_LANG_NL_NL " (ͳ)\t\t\t[%s]" - IDS_MUI_LANG_PT_BR " ()\t\t\t[%s]" - IDS_MUI_LANG_RU_RU " ()\t\t\t[%s]" - IDS_MUI_LANG_ZH_CN "ʳ (Hans)\t\t\t[%s]" END STRINGTABLE diff --git a/language/np3_de_de/np3_de_de.vcxproj b/language/np3_de_de/np3_de_de.vcxproj index 5e8663650..e19502b6f 100644 --- a/language/np3_de_de/np3_de_de.vcxproj +++ b/language/np3_de_de/np3_de_de.vcxproj @@ -1,4 +1,4 @@ - + @@ -120,7 +120,7 @@ MUI Split - 0x0423 + 0x0407 $(ProjectDir)..\..\res;%(AdditionalIncludeDirectories) @@ -146,7 +146,7 @@ MUI Split - 0x0423 + 0x0407 $(ProjectDir)..\..\res;%(AdditionalIncludeDirectories) @@ -178,7 +178,7 @@ MUI Split - 0x0423 + 0x0407 $(ProjectDir)..\..\res;%(AdditionalIncludeDirectories) @@ -210,7 +210,7 @@ MUI Split - 0x0423 + 0x0407 $(ProjectDir)..\..\res;%(AdditionalIncludeDirectories) diff --git a/language/np3_de_de/strings_de_de.rc b/language/np3_de_de/strings_de_de.rc index 0f09fac3d..c25cf336a 100644 --- a/language/np3_de_de/strings_de_de.rc +++ b/language/np3_de_de/strings_de_de.rc @@ -201,21 +201,6 @@ END STRINGTABLE BEGIN IDS_MUI_MENU_LANGUAGE "Sprache" - IDS_MUI_LANG_EN_US "Englisch (Vereinigte Staaten)\t\t\t[%s]" - IDS_MUI_LANG_AF_ZA "Afrikaans (Sdafrika)\t\t\t[%s]" - IDS_MUI_LANG_BE_BY "Weirussisch (Weirussland)\t\t\t[%s]" - IDS_MUI_LANG_DE_DE "Deutsch (Deutschland)\t\t\t[%s]" - IDS_MUI_LANG_EN_GB "Englisch (Vereinigtes Knigreich)\t\t\t[%s]" - IDS_MUI_LANG_ES_ES "Spanisch (Spanien)\t\t\t[%s]" - IDS_MUI_LANG_FR_FR "Franzsisch (Frankreich)\t\t\t[%s]" - IDS_MUI_LANG_HU_HU "Ungarisch (Ungarn)\t\t\t[%s]" - IDS_MUI_LANG_IT_IT "Italienisch (Italien)\t\t\t[%s]" - IDS_MUI_LANG_JP_JP "Japanisch (Japan)\t\t\t[%s]" - IDS_MUI_LANG_KO_KR "Koreanisch (Korea)\t\t\t[%s]" - IDS_MUI_LANG_NL_NL "Niederlndisch (Niederlande)\t\t\t[%s]" - IDS_MUI_LANG_PT_BR "Portugiesisch (Brasilien)\t\t\t[%s]" - IDS_MUI_LANG_RU_RU "Russisch (Russland)\t\t\t[%s]" - IDS_MUI_LANG_ZH_CN "Chinesisch (Hans)\t\t\t[%s]" END STRINGTABLE diff --git a/language/np3_en_gb/strings_en_gb.rc b/language/np3_en_gb/strings_en_gb.rc index 7d89ee205..a7d5ede0b 100644 --- a/language/np3_en_gb/strings_en_gb.rc +++ b/language/np3_en_gb/strings_en_gb.rc @@ -229,21 +229,6 @@ END STRINGTABLE BEGIN IDS_MUI_MENU_LANGUAGE "Language" - IDS_MUI_LANG_EN_US "English (United States)\t\t\t[%s]" - IDS_MUI_LANG_AF_ZA "Afrikaans (South Africa)\t\t\t[%s]" - IDS_MUI_LANG_BE_BY "Belarusian (Belarus)\t\t\t[%s]" - IDS_MUI_LANG_DE_DE "German (Germany)\t\t\t[%s]" - IDS_MUI_LANG_EN_GB "English (United Kingdom)\t\t\t[%s]" - IDS_MUI_LANG_ES_ES "Spanish (Spain)\t\t\t[%s]" - IDS_MUI_LANG_FR_FR "French (France)\t\t\t[%s]" - IDS_MUI_LANG_HU_HU "Hungarian (Hungary)\t\t\t[%s]" - IDS_MUI_LANG_IT_IT "Italian (Italy)\t\t\t[%s]" - IDS_MUI_LANG_JP_JP "Japanese (Japan)\t\t\t[%s]" - IDS_MUI_LANG_KO_KR "Korean (Korea)\t\t\t[%s]" - IDS_MUI_LANG_NL_NL "Dutch (Netherlands)\t\t\t[%s]" - IDS_MUI_LANG_PT_BR "Portuguese (Brazil)\t\t\t[%s]" - IDS_MUI_LANG_RU_RU "Russian (Russia)\t\t\t[%s]" - IDS_MUI_LANG_ZH_CN "Chinese (Hans)\t\t\t[%s]" END STRINGTABLE diff --git a/language/np3_en_us/strings_en_us.rc b/language/np3_en_us/strings_en_us.rc index aefb1c84f..010388d6a 100644 --- a/language/np3_en_us/strings_en_us.rc +++ b/language/np3_en_us/strings_en_us.rc @@ -229,21 +229,6 @@ END STRINGTABLE BEGIN IDS_MUI_MENU_LANGUAGE "Language" - IDS_MUI_LANG_EN_US "English (United States)\t\t\t[%s]" - IDS_MUI_LANG_AF_ZA "Afrikaans (South Africa)\t\t\t[%s]" - IDS_MUI_LANG_BE_BY "Belarusian (Belarus)\t\t\t[%s]" - IDS_MUI_LANG_DE_DE "German (Germany)\t\t\t[%s]" - IDS_MUI_LANG_EN_GB "English (United Kingdom)\t\t\t[%s]" - IDS_MUI_LANG_ES_ES "Spanish (Spain)\t\t\t[%s]" - IDS_MUI_LANG_FR_FR "French (France)\t\t\t[%s]" - IDS_MUI_LANG_HU_HU "Hungarian (Hungary)\t\t\t[%s]" - IDS_MUI_LANG_IT_IT "Italian (Italy)\t\t\t[%s]" - IDS_MUI_LANG_JP_JP "Japanese (Japan)\t\t\t[%s]" - IDS_MUI_LANG_KO_KR "Korean (Korea)\t\t\t[%s]" - IDS_MUI_LANG_NL_NL "Dutch (Netherlands)\t\t\t[%s]" - IDS_MUI_LANG_PT_BR "Portuguese (Brazil)\t\t\t[%s]" - IDS_MUI_LANG_RU_RU "Russian (Russia)\t\t\t[%s]" - IDS_MUI_LANG_ZH_CN "Chinese (Hans)\t\t\t[%s]" END STRINGTABLE diff --git a/language/np3_es_es/strings_es_es.rc b/language/np3_es_es/strings_es_es.rc index f984ca13a..70f237309 100644 --- a/language/np3_es_es/strings_es_es.rc +++ b/language/np3_es_es/strings_es_es.rc @@ -201,21 +201,6 @@ END STRINGTABLE BEGIN IDS_MUI_MENU_LANGUAGE "Idioma" - IDS_MUI_LANG_EN_US "Ingls (Estados Unidos)\t\t\t[%s]" - IDS_MUI_LANG_AF_ZA "Afrikans (Sudfrica)\t\t\t[%s]" - IDS_MUI_LANG_BE_BY "Bielorruso (Belars)\t\t\t[%s]" - IDS_MUI_LANG_DE_DE "Alemn (Alemania)\t\t\t[%s]" - IDS_MUI_LANG_EN_GB "Ingls (Reino Unido)\t\t\t[%s]" - IDS_MUI_LANG_ES_ES "Espaol (Espaa)\t\t\t[%s]" - IDS_MUI_LANG_FR_FR "Francs (Francia)\t\t\t[%s]" - IDS_MUI_LANG_HU_HU "Hngaro (Hungra)\t\t\t[%s]" - IDS_MUI_LANG_IT_IT "Italiano (Italia)\t\t\t[%s]" - IDS_MUI_LANG_JP_JP "Japons (Japn)\t\t\t[%s]" - IDS_MUI_LANG_KO_KR "Coreano (Corea)\t\t\t[%s]" - IDS_MUI_LANG_NL_NL "Holands (Pases Bajos)\t\t\t[%s]" - IDS_MUI_LANG_PT_BR "Portugus (Brasil)\t\t\t[%s]" - IDS_MUI_LANG_RU_RU "Ruso (Rusia)\t\t\t[%s]" - IDS_MUI_LANG_ZH_CN "Chino (Hans)\t\t\t[%s]" END STRINGTABLE diff --git a/language/np3_fr_fr/strings_fr_fr.rc b/language/np3_fr_fr/strings_fr_fr.rc index c7c73980a..7de48c0a7 100644 --- a/language/np3_fr_fr/strings_fr_fr.rc +++ b/language/np3_fr_fr/strings_fr_fr.rc @@ -199,21 +199,6 @@ END STRINGTABLE BEGIN IDS_MUI_MENU_LANGUAGE "Langue" - IDS_MUI_LANG_EN_US "Anglais (tats-Unis)\t\t\t[%s]" - IDS_MUI_LANG_AF_ZA "Afrikaans (Afrique du Sud)\t\t\t[%s]" - IDS_MUI_LANG_BE_BY "Bilorusse (Bilorussie)\t\t\t[%s]" - IDS_MUI_LANG_DE_DE "Allemand (Allemagne)\t\t\t[%s]" - IDS_MUI_LANG_EN_GB "Anglais (Royaume Uni)\t\t\t[%s]" - IDS_MUI_LANG_ES_ES "Espagnol (Espagne)\t\t\t[%s]" - IDS_MUI_LANG_FR_FR "Franais (France)\t\t\t[%s]" - IDS_MUI_LANG_HU_HU "Hongrois (Hongrie)\t\t\t[%s]" - IDS_MUI_LANG_IT_IT "Italien (Italie)\t\t\t[%s]" - IDS_MUI_LANG_JP_JP "Japonais (Japon)\t\t\t[%s]" - IDS_MUI_LANG_KO_KR "Coren (Core)\t\t\t[%s]" - IDS_MUI_LANG_NL_NL "Nerlandais (Pays-Bas)\t\t\t[%s]" - IDS_MUI_LANG_PT_BR "Portugais (Brsil)\t\t\t[%s]" - IDS_MUI_LANG_RU_RU "Russe (Russie)\t\t\t[%s]" - IDS_MUI_LANG_ZH_CN "Chinois (Hans)\t\t\t[%s]" END STRINGTABLE diff --git a/language/np3_hu_hu/strings_hu_hu.rc b/language/np3_hu_hu/strings_hu_hu.rc index bf53030e3..112c51713 100644 --- a/language/np3_hu_hu/strings_hu_hu.rc +++ b/language/np3_hu_hu/strings_hu_hu.rc @@ -229,21 +229,6 @@ END STRINGTABLE BEGIN IDS_MUI_MENU_LANGUAGE "Nyelv" - IDS_MUI_LANG_EN_US "Angol (Egyeslt llamok)\t\t\t[%s]" - IDS_MUI_LANG_AF_ZA "Afrikaans (Dl-Afrika)\t\t\t[%s]" - IDS_MUI_LANG_BE_BY "Fehroroszorszg (Fehroroszorszg)\t\t\t[%s]" - IDS_MUI_LANG_DE_DE "Nmet (Nmetorszg)\t\t\t[%s]" - IDS_MUI_LANG_EN_GB "Angol Egyeslt Kirlysg)\t\t\t[%s]" - IDS_MUI_LANG_ES_ES "Spanyol (Spanyolorszg)\t\t\t[%s]" - IDS_MUI_LANG_FR_FR "Francia (Franciaorszg)\t\t\t[%s]" - IDS_MUI_LANG_HU_HU "Magyar (Magyarorszg)\t\t\t[%s]" - IDS_MUI_LANG_IT_IT "Olasz (Olaszorszg)\t\t\t[%s]" - IDS_MUI_LANG_JP_JP "Japn (Japn)\t\t\t[%s]" - IDS_MUI_LANG_KO_KR "Koreai (koreai)\t\t\t[%s]" - IDS_MUI_LANG_NL_NL "Holland (Hollandia)\t\t\t[%s]" - IDS_MUI_LANG_PT_BR "Portugl (Brazlia)\t\t\t[%s]" - IDS_MUI_LANG_RU_RU "Orosz (Oroszorszg)\t\t\t[%s]" - IDS_MUI_LANG_ZH_CN "Knai (Hans)\t\t\t[%s]" END STRINGTABLE diff --git a/language/np3_it_it/strings_it_it.rc b/language/np3_it_it/strings_it_it.rc index f80b99c4b..df4500d80 100644 --- a/language/np3_it_it/strings_it_it.rc +++ b/language/np3_it_it/strings_it_it.rc @@ -229,21 +229,6 @@ END STRINGTABLE BEGIN IDS_MUI_MENU_LANGUAGE "Lingua" - IDS_MUI_LANG_EN_US "Inglese (Stati Uniti)\t\t\t[%s]" - IDS_MUI_LANG_AF_ZA "Afrikaans (Sudafrica)\t\t\t[%s]" - IDS_MUI_LANG_BE_BY "Bielorusso (Bielorussia)\t\t\t[%s]" - IDS_MUI_LANG_DE_DE "Tedesco (Germania)\t\t\t[%s]" - IDS_MUI_LANG_EN_GB "Inglese (Regno Unito)\t\t\t[%s]" - IDS_MUI_LANG_ES_ES "Spagnolo (Spagna)\t\t\t[%s]" - IDS_MUI_LANG_FR_FR "Francese (Francia)\t\t\t[%s]" - IDS_MUI_LANG_HU_HU "Ungherese (Ungheria)\t\t\t[%s]" - IDS_MUI_LANG_IT_IT "Italiano (Italia)\t\t\t[%s]" - IDS_MUI_LANG_JP_JP "Giapponese (Giappone)\t\t\t[%s]" - IDS_MUI_LANG_KO_KR "Coreano (coreana\t\t\t[%s]" - IDS_MUI_LANG_NL_NL "Olandese (Paesi Bassi)\t\t\t[%s]" - IDS_MUI_LANG_PT_BR "Portoghese (Brasile)\t\t\t[%s]" - IDS_MUI_LANG_RU_RU "Russo (Russia)\t\t\t[%s]" - IDS_MUI_LANG_ZH_CN "Cinese (Hans)\t\t\t[%s]" END STRINGTABLE diff --git a/language/np3_ja_jp/strings_ja_jp.rc b/language/np3_ja_jp/strings_ja_jp.rc index faa921b24..d4b6d55ce 100644 --- a/language/np3_ja_jp/strings_ja_jp.rc +++ b/language/np3_ja_jp/strings_ja_jp.rc @@ -201,21 +201,6 @@ END STRINGTABLE BEGIN IDS_MUI_MENU_LANGUAGE "" - IDS_MUI_LANG_EN_US "piAJj\t\t\t[%s]" - IDS_MUI_LANG_AF_ZA "AtJ[XiAtJj\t\t\t[%s]" - IDS_MUI_LANG_BE_BY "x[Vix[Vj\t\t\t[%s]" - IDS_MUI_LANG_DE_DE "hCcihCcj\t\t\t[%s]" - IDS_MUI_LANG_EN_GB "piCMXj\t\t\t[%s]" - IDS_MUI_LANG_ES_ES "XyCiXyCj\t\t\t[%s]" - IDS_MUI_LANG_FR_FR "tXitXj\t\t\t[%s]" - IDS_MUI_LANG_HU_HU "nK[inK[j\t\t\t[%s]" - IDS_MUI_LANG_IT_IT "C^AiC^Aj\t\t\t[%s]" - IDS_MUI_LANG_JP_JP "{i{j\t\t\t[%s]" - IDS_MUI_LANG_KO_KR "؍i؍j\t\t\t[%s]" - IDS_MUI_LANG_NL_NL "I_iI_j\t\t\t[%s]" - IDS_MUI_LANG_PT_BR "|gKiuWj\t\t\t[%s]" - IDS_MUI_LANG_RU_RU "VAiVAj\t\t\t[%s]" - IDS_MUI_LANG_ZH_CN "inXj\t\t\t[%s]" END STRINGTABLE diff --git a/language/np3_ko_kr/strings_ko_kr.rc b/language/np3_ko_kr/strings_ko_kr.rc index 2eb6d343a..156fee9bc 100644 --- a/language/np3_ko_kr/strings_ko_kr.rc +++ b/language/np3_ko_kr/strings_ko_kr.rc @@ -221,21 +221,6 @@ END STRINGTABLE BEGIN IDS_MUI_MENU_LANGUAGE "" - IDS_MUI_LANG_EN_US " (̱)\t\t\t[%s]" - IDS_MUI_LANG_AF_ZA "ĭ (ī ȭ)\t\t\t[%s]" - IDS_MUI_LANG_BE_BY "ηþ (η)\t\t\t[%s]" - IDS_MUI_LANG_DE_DE "Ͼ ()\t\t\t[%s]" - IDS_MUI_LANG_EN_GB " ()\t\t\t[%s]" - IDS_MUI_LANG_ES_ES "ξ ()\t\t\t[%s]" - IDS_MUI_LANG_FR_FR " ()\t\t\t[%s]" - IDS_MUI_LANG_HU_HU "밡 (밡)\t\t\t[%s]" - IDS_MUI_LANG_IT_IT "Żƾ (Ż)\t\t\t[%s]" - IDS_MUI_LANG_JP_JP "Ϻ (Ϻ)\t\t\t[%s]" - IDS_MUI_LANG_KO_KR "ѱ (ѹα)\t\t\t[%s]" - IDS_MUI_LANG_NL_NL "״ (״)\t\t\t[%s]" - IDS_MUI_LANG_PT_BR " ()\t\t\t[%s]" - IDS_MUI_LANG_RU_RU "þƾ (þ)\t\t\t[%s]" - IDS_MUI_LANG_ZH_CN "߱ (Ѿ)\t\t\t[%s]" END STRINGTABLE diff --git a/language/np3_nl_nl/strings_nl_nl.rc b/language/np3_nl_nl/strings_nl_nl.rc index 906c15cc9..859b7c574 100644 --- a/language/np3_nl_nl/strings_nl_nl.rc +++ b/language/np3_nl_nl/strings_nl_nl.rc @@ -201,21 +201,6 @@ END STRINGTABLE BEGIN IDS_MUI_MENU_LANGUAGE "Taal" - IDS_MUI_LANG_EN_US "Engels (Verenigde Staten)\t\t\t[%s]" - IDS_MUI_LANG_AF_ZA "Afrikaans (Zuid-Afrika)\t\t\t[%s]" - IDS_MUI_LANG_BE_BY "Wit-Russisch (Wit-Rusland)\t\t\t[%s]" - IDS_MUI_LANG_DE_DE "Duits (Duitsland)\t\t\t[%s]" - IDS_MUI_LANG_EN_GB "Engels (Verenigd Koninkrijk)\t\t\t[%s]" - IDS_MUI_LANG_ES_ES "Spaans (Spanje)\t\t\t[%s]" - IDS_MUI_LANG_FR_FR "Frans (Frankrijk)\t\t\t[%s]" - IDS_MUI_LANG_HU_HU "Hongaars (Hongarije)\t\t\t[%s]" - IDS_MUI_LANG_IT_IT "Italiaans (Itali)\t\t\t[%s]" - IDS_MUI_LANG_JP_JP "Japans (Japan)\t\t\t[%s]" - IDS_MUI_LANG_KO_KR "Koreaans (Korea)\t\t\t[%s]" - IDS_MUI_LANG_NL_NL "Nederlands (Nederland)\t\t\t[%s]" - IDS_MUI_LANG_PT_BR "Portugees (Brazili)\t\t\t[%s]" - IDS_MUI_LANG_RU_RU "Russisch (Rusland)\t\t\t[%s]" - IDS_MUI_LANG_ZH_CN "Chinees (Hans)\t\t\t[%s]" END STRINGTABLE diff --git a/language/np3_pt_br/strings_pt_br.rc b/language/np3_pt_br/strings_pt_br.rc index 9048c84e7..2a0bce792 100644 --- a/language/np3_pt_br/strings_pt_br.rc +++ b/language/np3_pt_br/strings_pt_br.rc @@ -229,21 +229,6 @@ END STRINGTABLE BEGIN IDS_MUI_MENU_LANGUAGE "Lngua" - IDS_MUI_LANG_EN_US "Ingls (Estados Unidos)\t\t\t[%s]" - IDS_MUI_LANG_AF_ZA "Afrikaans (frica do Sul)\t\t\t[%s]" - IDS_MUI_LANG_BE_BY "Bielorrusso (Bielorrssia)\t\t\t[%s]" - IDS_MUI_LANG_DE_DE "Alemanha (Alem)\t\t\t[%s]" - IDS_MUI_LANG_EN_GB "Ingls (Reino Unido)\t\t\t[%s]" - IDS_MUI_LANG_ES_ES "Espanhol (Espanha)\t\t\t[%s]" - IDS_MUI_LANG_FR_FR "Francs Frana)\t\t\t[%s]" - IDS_MUI_LANG_HU_HU "Hngaro (Hungria)\t\t\t[%s]" - IDS_MUI_LANG_IT_IT "Italiano (Itlia)\t\t\t[%s]" - IDS_MUI_LANG_JP_JP "Japons (Japo)\t\t\t[%s]" - IDS_MUI_LANG_KO_KR "Coreano (Coria)\t\t\t[%s]" - IDS_MUI_LANG_NL_NL "Holands (Holanda)\t\t\t[%s]" - IDS_MUI_LANG_PT_BR "Portugus (Brasil)\t\t\t[%s]" - IDS_MUI_LANG_RU_RU "Russo (Rssia)\t\t\t[%s]" - IDS_MUI_LANG_ZH_CN "Chins (Hans)\t\t\t[%s]" END STRINGTABLE diff --git a/language/np3_ru_ru/strings_ru_ru.rc b/language/np3_ru_ru/strings_ru_ru.rc index 111393cb8..cc94f4846 100644 --- a/language/np3_ru_ru/strings_ru_ru.rc +++ b/language/np3_ru_ru/strings_ru_ru.rc @@ -201,21 +201,6 @@ END STRINGTABLE BEGIN IDS_MUI_MENU_LANGUAGE "" - IDS_MUI_LANG_EN_US " )\t\t\t[%s]" - IDS_MUI_LANG_AF_ZA " ( )\t\t\t[%s]" - IDS_MUI_LANG_BE_BY " ()\t\t\t[%s]" - IDS_MUI_LANG_DE_DE " ()\t\t\t[%s]" - IDS_MUI_LANG_EN_GB " ()\t\t\t[%s]" - IDS_MUI_LANG_ES_ES " ()\t\t\t[%s]" - IDS_MUI_LANG_FR_FR " ()\t\t\t[%s]" - IDS_MUI_LANG_HU_HU " ()\t\t\t[%s]" - IDS_MUI_LANG_IT_IT " ()\t\t\t[%s]" - IDS_MUI_LANG_JP_JP " ()\t\t\t[%s]" - IDS_MUI_LANG_KO_KR " (K)\t\t\t[%s]" - IDS_MUI_LANG_NL_NL " ()\t\t\t[%s]" - IDS_MUI_LANG_PT_BR " ()\t\t\t[%s]" - IDS_MUI_LANG_RU_RU " (P)\t\t\t[%s]" - IDS_MUI_LANG_ZH_CN " ()\t\t\t[%s]" END STRINGTABLE diff --git a/language/np3_zh_cn/strings_zh_cn.rc b/language/np3_zh_cn/strings_zh_cn.rc index b05c13b05..a91969dd6 100644 --- a/language/np3_zh_cn/strings_zh_cn.rc +++ b/language/np3_zh_cn/strings_zh_cn.rc @@ -201,21 +201,6 @@ END STRINGTABLE BEGIN IDS_MUI_MENU_LANGUAGE "" - IDS_MUI_LANG_EN_US "Ӣ\t\t\t[%s]" - IDS_MUI_LANG_AF_ZA "ϷǺϷǣ\t\t\t[%s]" - IDS_MUI_LANG_BE_BY "B׶˹׶˹\t\t\t[%s]" - IDS_MUI_LANG_DE_DE "¹\t\t\t[%s]" - IDS_MUI_LANG_EN_GB "ӢӢ\t\t\t[%s]" - IDS_MUI_LANG_ES_ES "\t\t\t[%s]" - IDS_MUI_LANG_FR_FR "\t\t\t[%s]" - IDS_MUI_LANG_HU_HU "\t\t\t[%s]" - IDS_MUI_LANG_IT_IT "\t\t\t[%s]" - IDS_MUI_LANG_JP_JP "ձձ\t\t\t[%s]" - IDS_MUI_LANG_KO_KR "\t\t\t[%s]" - IDS_MUI_LANG_NL_NL "\t\t\t[%s]" - IDS_MUI_LANG_PT_BR "\t\t\t[%s]" - IDS_MUI_LANG_RU_RU "˹˹\t\t\t[%s]" - IDS_MUI_LANG_ZH_CN "ģ˹\t\t\t[%s]" END STRINGTABLE diff --git a/res/Notepad3.exe.manifest.conf b/res/Notepad3.exe.manifest.conf index bd3fa10c3..d08f5d81f 100644 --- a/res/Notepad3.exe.manifest.conf +++ b/res/Notepad3.exe.manifest.conf @@ -3,7 +3,7 @@ Notepad3 XpErImEnTaL diff --git a/scintilla/doc/ScintillaDownload.html b/scintilla/doc/ScintillaDownload.html index 9e40a0850..30316ffb7 100644 --- a/scintilla/doc/ScintillaDownload.html +++ b/scintilla/doc/ScintillaDownload.html @@ -50,8 +50,8 @@ The source code package contains all of the source code for Scintilla but no binary executable code and is available in
    -
  • zip format (1600K) commonly used on Windows
  • -
  • tgz format (1400K) commonly used on Linux and compatible operating systems
  • +
  • zip format (1700K) commonly used on Windows
  • +
  • tgz format (1500K) commonly used on Linux and compatible operating systems
Instructions for building on both Windows and Linux are included in the readme file.

diff --git a/scintilla/include/Scintilla.h b/scintilla/include/Scintilla.h index 9c805c1e3..6ff4c49c1 100644 --- a/scintilla/include/Scintilla.h +++ b/scintilla/include/Scintilla.h @@ -835,7 +835,6 @@ typedef sptr_t (*SciFnDirect)(sptr_t ptr, unsigned int iMessage, uptr_t wParam, #define CARETSTYLE_BLOCK 2 #define CARETSTYLE_OVERSTRIKE_BAR 0 #define CARETSTYLE_OVERSTRIKE_BLOCK 16 -#define CARETSTYLE_INS_MASK 0xF #define SCI_SETCARETSTYLE 2512 #define SCI_GETCARETSTYLE 2513 #define SCI_SETINDICATORCURRENT 2500 diff --git a/scintilla/include/Scintilla.iface b/scintilla/include/Scintilla.iface index e19f3cfb2..8fce94606 100644 --- a/scintilla/include/Scintilla.iface +++ b/scintilla/include/Scintilla.iface @@ -2187,7 +2187,6 @@ val CARETSTYLE_LINE=1 val CARETSTYLE_BLOCK=2 val CARETSTYLE_OVERSTRIKE_BAR=0 val CARETSTYLE_OVERSTRIKE_BLOCK=16 -val CARETSTYLE_INS_MASK=0xF # Set the style of the caret to be drawn. set void SetCaretStyle=2512(int caretStyle,) diff --git a/scintilla/src/ViewStyle.cxx b/scintilla/src/ViewStyle.cxx index e650b1062..fc3a8489c 100644 --- a/scintilla/src/ViewStyle.cxx +++ b/scintilla/src/ViewStyle.cxx @@ -27,6 +27,8 @@ #include "Style.h" #include "ViewStyle.h" +#define CARETSTYLE_INS_MASK 0xF + using namespace Scintilla; MarginStyle::MarginStyle(int style_, int width_, int mask_) : diff --git a/src/Edit.c b/src/Edit.c index c336928ad..b5cdaff54 100644 --- a/src/Edit.c +++ b/src/Edit.c @@ -8174,9 +8174,7 @@ bool FileVars_IsUTF8(LPFILEVARS lpfv) { // bool FileVars_IsValidEncoding(LPFILEVARS lpfv) { CPINFO cpi; - if (lpfv->mask & FV_ENCODING && - lpfv->iEncoding >= 0 && - lpfv->iEncoding < Encoding_CountOf()) { + if (lpfv->mask & FV_ENCODING && Encoding_IsValidIdx(lpfv->iEncoding)) { if ((Encoding_IsINTERNAL(lpfv->iEncoding)) || (IsValidCodePage(Encoding_GetCodePage(lpfv->iEncoding)) && GetCPInfo(Encoding_GetCodePage(lpfv->iEncoding),&cpi))) { diff --git a/src/Encoding.c b/src/Encoding.c index 15477ed8a..67fae5fb3 100644 --- a/src/Encoding.c +++ b/src/Encoding.c @@ -48,9 +48,9 @@ WCHAR wchOEM[16] = { L'\0' }; // ============================================================================ -int Encoding_Current(int iEncoding) +cpi_enc_t Encoding_Current(cpi_enc_t iEncoding) { - static int CurrentEncoding = CPI_NONE; + static cpi_enc_t CurrentEncoding = CPI_NONE; if (iEncoding >= 0) { if (Encoding_IsValid(iEncoding)) @@ -63,9 +63,9 @@ int Encoding_Current(int iEncoding) // ============================================================================ -int Encoding_SrcCmdLn(int iSrcEncoding) +cpi_enc_t Encoding_SrcCmdLn(cpi_enc_t iSrcEncoding) { - static int SourceEncoding = CPI_NONE; + static cpi_enc_t SourceEncoding = CPI_NONE; if (iSrcEncoding >= 0) { if (Encoding_IsValid(iSrcEncoding)) @@ -81,9 +81,9 @@ int Encoding_SrcCmdLn(int iSrcEncoding) // ============================================================================ -int Encoding_SrcWeak(int iSrcWeakEnc) +cpi_enc_t Encoding_SrcWeak(cpi_enc_t iSrcWeakEnc) { - static int SourceWeakEncoding = CPI_NONE; + static cpi_enc_t SourceWeakEncoding = CPI_NONE; if (iSrcWeakEnc >= 0) { if (Encoding_IsValid(iSrcWeakEnc)) @@ -99,9 +99,9 @@ int Encoding_SrcWeak(int iSrcWeakEnc) // ============================================================================ -bool Encoding_HasChanged(int iOriginalEncoding) +bool Encoding_HasChanged(cpi_enc_t iOriginalEncoding) { - static int OriginalEncoding = CPI_NONE; + static cpi_enc_t OriginalEncoding = CPI_NONE; if (iOriginalEncoding >= CPI_NONE) { OriginalEncoding = iOriginalEncoding; @@ -128,7 +128,7 @@ void Encoding_InitDefaults() Globals.bIsCJKInputCodePage = IsDBCSCodePage(Scintilla_InputCodePage()); - for (int i = CPI_UTF7 + 1; i < Encoding_CountOf(); ++i) { + for (cpi_enc_t i = CPI_UTF7 + 1; i < Encoding_CountOf(); ++i) { if (Encoding_IsValid(i) && (g_Encodings[i].uCodePage == g_Encodings[CPI_ANSI_DEFAULT].uCodePage)) { g_Encodings[i].uFlags |= NCP_ANSI; if (g_Encodings[i].uFlags & NCP_EXTERNAL_8BIT) @@ -140,7 +140,7 @@ void Encoding_InitDefaults() ChangeEncodingCodePage(CPI_OEM, GetOEMCP()); // set OEM system CP StringCchPrintf(wchOEM, COUNTOF(wchOEM), L" (CP-%u)", g_Encodings[CPI_OEM].uCodePage); - for (int i = CPI_UTF7 + 1; i < Encoding_CountOf(); ++i) { + for (cpi_enc_t i = CPI_UTF7 + 1; i < Encoding_CountOf(); ++i) { if (Encoding_IsValid(i) && (g_Encodings[i].uCodePage == g_Encodings[CPI_OEM].uCodePage)) { g_Encodings[i].uFlags |= NCP_OEM; if (g_Encodings[i].uFlags & NCP_EXTERNAL_8BIT) @@ -150,7 +150,7 @@ void Encoding_InitDefaults() } // multi byte character sets - for (int i = 0; i < Encoding_CountOf(); ++i) { + for (cpi_enc_t i = 0; i < Encoding_CountOf(); ++i) { for (int k = 0; k < COUNTOF(uCodePageMBCS); k++) { if (g_Encodings[i].uCodePage == uCodePageMBCS[k]) { g_Encodings[i].uFlags |= NCP_MBCS; @@ -161,7 +161,7 @@ void Encoding_InitDefaults() g_DOSEncoding = CPI_OEM; // Try to set the DOS encoding to DOS-437 if the default OEMCP is not DOS-437 if (g_Encodings[g_DOSEncoding].uCodePage != 437) { - for (int i = CPI_UTF7 + 1; i < Encoding_CountOf(); ++i) { + for (cpi_enc_t i = CPI_UTF7 + 1; i < Encoding_CountOf(); ++i) { if (Encoding_IsValid(i) && (g_Encodings[i].uCodePage == 437)) { g_DOSEncoding = i; break; @@ -173,7 +173,8 @@ void Encoding_InitDefaults() // ============================================================================ -int Encoding_MapIniSetting(bool bLoad, int iSetting) { +cpi_enc_t Encoding_MapIniSetting(bool bLoad, cpi_enc_t iSetting) +{ if (bLoad) { switch (iSetting) { case -1: return CPI_NONE; @@ -187,7 +188,7 @@ int Encoding_MapIniSetting(bool bLoad, int iSetting) { case 7: return CPI_UNICODEBE; case 8: return CPI_UTF7; default: { - for (int i = CPI_UTF7 + 1; i < Encoding_CountOf(); i++) { + for (cpi_enc_t i = CPI_UTF7 + 1; i < Encoding_CountOf(); i++) { if ((g_Encodings[i].uCodePage == (UINT)iSetting) && Encoding_IsValid(i)) return(i); } @@ -218,7 +219,7 @@ int Encoding_MapIniSetting(bool bLoad, int iSetting) { // ============================================================================ -int Encoding_MapUnicode(int iUni) +int Encoding_MapUnicode(cpi_enc_t iUni) { if (iUni == CPI_UNICODEBOM) { return CPI_UNICODE; @@ -234,7 +235,7 @@ int Encoding_MapUnicode(int iUni) // ============================================================================ -void Encoding_SetLabel(int iEncoding) +void Encoding_SetLabel(cpi_enc_t iEncoding) { WCHAR wch1[128] = { L'\0' }; GetLngString(g_Encodings[iEncoding].idsName, wch1, COUNTOF(wch1)); @@ -265,16 +266,16 @@ void Encoding_SetLabel(int iEncoding) // ============================================================================ -int Encoding_MatchW(LPCWSTR pwszTest) +cpi_enc_t Encoding_MatchW(LPCWSTR pwszTest) { char tchTest[256] = { '\0' }; WideCharToMultiByte(CP_ACP, 0, pwszTest, -1, tchTest, COUNTOF(tchTest), NULL, NULL); - return(Encoding_MatchA(tchTest)); + return Encoding_MatchA(tchTest); } // ============================================================================ -int Encoding_MatchA(const char *pchTest) +cpi_enc_t Encoding_MatchA(const char *pchTest) { char chTestLC[256]; chTestLC[0] = ','; @@ -282,7 +283,7 @@ int Encoding_MatchA(const char *pchTest) StringCchCatA(chTestLC, 256, pchTest); CharLowerA(chTestLC); StringCchCatA(chTestLC, 256, ","); // parsing incl. comma - for (int cpiEncId = 0; cpiEncId < Encoding_CountOf(); cpiEncId++) { + for (cpi_enc_t cpiEncId = 0; cpiEncId < Encoding_CountOf(); cpiEncId++) { if (StrStrIA(g_Encodings[cpiEncId].pszParseNames, chTestLC)) { CPINFO cpi; if ((g_Encodings[cpiEncId].uFlags & NCP_INTERNAL) || @@ -298,7 +299,9 @@ int Encoding_MatchA(const char *pchTest) // ============================================================================ -int Encoding_GetByCodePage(UINT cp) { + + +cpi_enc_t Encoding_GetByCodePage(UINT cp) { for (int i = 0; i < Encoding_CountOf(); i++) { if (cp == g_Encodings[i].uCodePage) { return i; @@ -309,9 +312,9 @@ int Encoding_GetByCodePage(UINT cp) { // ============================================================================ -bool Encoding_IsValid(int iTestEncoding) { +bool Encoding_IsValid(cpi_enc_t iTestEncoding) { CPINFO cpi; - if ((iTestEncoding >= 0) && (iTestEncoding < Encoding_CountOf())) { + if (Encoding_IsValidIdx(iTestEncoding)) { if ((g_Encodings[iTestEncoding].uFlags & NCP_INTERNAL) || (IsValidCodePage(g_Encodings[iTestEncoding].uCodePage) && GetCPInfo(g_Encodings[iTestEncoding].uCodePage, &cpi))) { @@ -497,92 +500,92 @@ bool Encoding_GetFromComboboxEx(HWND hwnd, int *pidEncoding) { // ============================================================================ -UINT Encoding_GetCodePage(const int iEncoding) { +UINT Encoding_GetCodePage(const cpi_enc_t iEncoding) { return (iEncoding >= 0) ? g_Encodings[iEncoding].uCodePage : CP_ACP; } // ============================================================================ -bool Encoding_IsDefault(const int iEncoding) { +bool Encoding_IsDefault(const cpi_enc_t iEncoding) { return (iEncoding >= 0) ? (g_Encodings[iEncoding].uFlags & NCP_DEFAULT) : false; } // ============================================================================ -bool Encoding_IsANSI(const int iEncoding) { +bool Encoding_IsANSI(const cpi_enc_t iEncoding) { return (iEncoding >= 0) ? (g_Encodings[iEncoding].uFlags & NCP_ANSI) : false; } // ============================================================================ -bool Encoding_IsOEM(const int iEncoding) { +bool Encoding_IsOEM(const cpi_enc_t iEncoding) { return (iEncoding >= 0) ? (g_Encodings[iEncoding].uFlags & NCP_OEM) : false; } // ============================================================================ -bool Encoding_IsUTF8(const int iEncoding) { +bool Encoding_IsUTF8(const cpi_enc_t iEncoding) { return (iEncoding >= 0) ? (g_Encodings[iEncoding].uFlags & NCP_UTF8) : false; } // ============================================================================ -bool Encoding_IsUTF8_SIGN(const int iEncoding) { +bool Encoding_IsUTF8_SIGN(const cpi_enc_t iEncoding) { return (iEncoding >= 0) ? (g_Encodings[iEncoding].uFlags & NCP_UTF8_SIGN) : false; } // ============================================================================ -bool Encoding_IsMBCS(const int iEncoding) { +bool Encoding_IsMBCS(const cpi_enc_t iEncoding) { return (iEncoding >= 0) ? (g_Encodings[iEncoding].uFlags & NCP_MBCS) : false; } // ============================================================================ -bool Encoding_IsASCII(const int iEncoding) { +bool Encoding_IsASCII(const cpi_enc_t iEncoding) { return (iEncoding >= 0) ? (g_Encodings[iEncoding].uFlags & NCP_ASCII_7BIT) : false; } // ============================================================================ -bool Encoding_IsUNICODE(const int iEncoding) { +bool Encoding_IsUNICODE(const cpi_enc_t iEncoding) { return (iEncoding >= 0) ? (g_Encodings[iEncoding].uFlags & NCP_UNICODE) : false; } // ============================================================================ -bool Encoding_IsUNICODE_BOM(const int iEncoding) { +bool Encoding_IsUNICODE_BOM(const cpi_enc_t iEncoding) { return (iEncoding >= 0) ? (g_Encodings[iEncoding].uFlags & NCP_UNICODE_BOM) : false; } // ============================================================================ -bool Encoding_IsUNICODE_REVERSE(const int iEncoding) { +bool Encoding_IsUNICODE_REVERSE(const cpi_enc_t iEncoding) { return (iEncoding >= 0) ? (g_Encodings[iEncoding].uFlags & NCP_UNICODE_REVERSE) : false; } // ============================================================================ -bool Encoding_IsINTERNAL(const int iEncoding) { +bool Encoding_IsINTERNAL(const cpi_enc_t iEncoding) { return (iEncoding >= 0) ? (g_Encodings[iEncoding].uFlags & NCP_INTERNAL) : false; } // ============================================================================ -bool Encoding_IsEXTERNAL_8BIT(const int iEncoding) { +bool Encoding_IsEXTERNAL_8BIT(const cpi_enc_t iEncoding) { return (iEncoding >= 0) ? (g_Encodings[iEncoding].uFlags & NCP_EXTERNAL_8BIT) : false; } // ============================================================================ -bool Encoding_IsRECODE(const int iEncoding) { +bool Encoding_IsRECODE(const cpi_enc_t iEncoding) { return (iEncoding >= 0) ? (g_Encodings[iEncoding].uFlags & NCP_RECODE) : false; } // ============================================================================ -void Encoding_SetDefaultFlag(const int iEncoding) { +void Encoding_SetDefaultFlag(const cpi_enc_t iEncoding) { if (iEncoding >= 0) g_Encodings[iEncoding].uFlags |= NCP_DEFAULT; } // ============================================================================ -const WCHAR* Encoding_GetLabel(const int iEncoding) { +const WCHAR* Encoding_GetLabel(const cpi_enc_t iEncoding) { return (iEncoding >= 0) ? g_Encodings[iEncoding].wchLabel : NULL; } // ============================================================================ -const char* Encoding_GetParseNames(const int iEncoding) { +const char* Encoding_GetParseNames(const cpi_enc_t iEncoding) { return (iEncoding >= 0) ? g_Encodings[iEncoding].pszParseNames : NULL; } // ============================================================================ diff --git a/src/Encoding.h b/src/Encoding.h index d0e5e086f..4cdc80279 100644 --- a/src/Encoding.h +++ b/src/Encoding.h @@ -57,17 +57,18 @@ extern bool g_bForceCompEncDetection; #define Encoding_IsNONE(enc) ((enc) == CPI_NONE) +//typedef intptr_t cpi_enc_t; +typedef int cpi_enc_t; + typedef struct _np2encoding { UINT uFlags; UINT uCodePage; const char* pszParseNames; int idsName; - int iCEDEncoding; WCHAR wchLabel[64]; } NP2ENCODING; -int Encoding_CountOf(); int Encoding_Current(int iEncoding); // getter/setter int Encoding_SrcCmdLn(int iSrcEncoding); // getter/setter int Encoding_SrcWeak(int iSrcWeakEnc); // getter/setter @@ -121,20 +122,36 @@ bool IsValidUnicode(const char* pBuffer, size_t cb, bool*, bool*); bool IsValidUTF7(const char* pTest, size_t nLength); bool IsValidUTF8(const char* pTest, size_t nLength); -// Google's "Compact Encoding Detection" +////////////////////////////////////////////////////// +// Google's CED "Compact Encoding Detection" +// Mozilla's UCHARDET "Universal Charset Detection" +////////////////////////////////////////////////////// + extern NP2ENCODING g_Encodings[]; -void ChangeEncodingCodePage(int cpi, UINT newCP); + +cpi_enc_t Encoding_CountOf(); + +inline bool Encoding_IsValidIdx(const cpi_enc_t cpi) +{ + return ((cpi >= 0) && (cpi < Encoding_CountOf())); +} + + +// 932 Shift-JIS, 936 GBK, 949 UHC, 950 Big5, 951 Big5-hkscs, 1361 Johab +inline bool IsDBCSCodePage(UINT cp) { + return ((cp == 932) || (cp == 936) || (cp == 949) || (cp == 950) || (cp == 951) || (cp == 1361)); +} + +inline void ChangeEncodingCodePage(const cpi_enc_t cpi, UINT newCP) +{ + if (Encoding_IsValidIdx(cpi)) { g_Encodings[cpi].uCodePage = newCP; } +} int Encoding_AnalyzeText(const char* const text, const size_t len, float* confidence_io, const int encodingHint); -const char* Encoding_GetTitleInfoA(); +const char* Encoding_GetTitleInfoA(); const WCHAR* Encoding_GetTitleInfoW(); -// 932 Shift-JIS, 936 GBK, 949 UHC, 950 Big5, 1361 Johab -inline bool IsDBCSCodePage(UINT cp) { - return ((cp == 932) || (cp == 936) || (cp == 949) || (cp == 950) || (cp == 1361)); -} - // -------------------------------------------------------------------------------------------------------------------------------- #endif //_NP3_ENCODING_H_ diff --git a/src/EncodingDetection.cpp b/src/EncodingDetection.cpp index fcf9737b3..cf5ed0594 100644 --- a/src/EncodingDetection.cpp +++ b/src/EncodingDetection.cpp @@ -59,13 +59,11 @@ extern "C" const WCHAR* Encoding_GetTitleInfoW() { return wchEncodingInfo; } //============================================================================= -#define ENC_PARSE_INTERCEPT_GB18030 ",GB-18030,gb18030," -// ------------------------------------------------------------- #define ENC_PARSE_NAM_ASCII ",ASCII,ascii," #define ENC_PARSE_NAM_ANSI ",ANSI,ansi,SYSTEM,system" ENC_PARSE_NAM_ASCII #define ENC_PARSE_NAM_OEM ",OEM,oem," -#define ENC_PARSE_NAM_UTF16LEBOM ",," -#define ENC_PARSE_NAM_UTF16BEBOM ",," +#define ENC_PARSE_NAM_UTF16LEBOM "" +#define ENC_PARSE_NAM_UTF16BEBOM "" #define ENC_PARSE_NAM_UTF16LE ",UTF-16,utf16,UTF-16LE,utf16le,unicode," #define ENC_PARSE_NAM_UTF16BE ",UTF-16BE,utf16be,unicodebe," #define ENC_PARSE_NAM_UTF8 ",UTF-8,utf8," @@ -82,9 +80,9 @@ extern "C" const WCHAR* Encoding_GetTitleInfoW() { return wchEncodingInfo; } #define ENC_PARSE_NAM_ISO_8859_2 ",ISO-8859-2,iso88592,csisolatin2,isoir101,latin2,l2," #define ENC_PARSE_NAM_MAC_CENTRAL_EUROP ",x-mac-ce,xmacce,mac-ce,xmaccentraleurope,maccentraleurope," #define ENC_PARSE_NAM_WIN_1250 ",Windows-1250,windows1250,CP-1250,cp1250,xcp1250," -#define ENC_PARSE_NAM_GBK_2312 ",gbk,gb2312,chinese,cngb,csgb2312,csgb231280,gb231280" ENC_PARSE_INTERCEPT_GB18030 +#define ENC_PARSE_NAM_GBK_2312 ",gbk,gb2312,chinese,cngb,csgb2312,csgb231280,gb231280,chinese_gb,gb," #define ENC_PARSE_NAM_MAC_ZH_CN ",x-mac-chinesesimp,xmacchinesesimp,mac-chinesesimp,macchinesesimp," -#define ENC_PARSE_NAM_BIG5 ",big5,cnbig5,csbig5,xxbig5," +#define ENC_PARSE_NAM_BIG5 ",big5,cnbig5,csbig5,xxbig5,chinese_big5," #define ENC_PARSE_NAM_MAC_ZH_TW ",x-mac-chinesetrad,xmacchinesetrad,mac-chinesetrad,macchinesetrad," #define ENC_PARSE_NAM_MAC_CROATIAN ",x-mac-croatian,xmaccroatian,mac-croatian,maccroatian," #define ENC_PARSE_NAM_DOS_866 ",CP-866,cp866,ibm866," @@ -134,7 +132,7 @@ extern "C" const WCHAR* Encoding_GetTitleInfoW() { return wchEncodingInfo; } #define ENC_PARSE_NAM_IBM_EBCDIC_INT ",x-ebcdic-International,xebcdicinternational," #define ENC_PARSE_NAM_IBM_EBCDIC_GR ",x-ebcdic-GreekModern,xebcdicgreekmodern," #define ENC_PARSE_NAM_IBM_EBCDIC_LAT_5 ",CP-1026,cp1026,ibm1026,csibm1026," -#define ENC_PARSE_NAM_GB18030 ENC_PARSE_INTERCEPT_GB18030 +#define ENC_PARSE_NAM_GB18030 ",GB-18030,gb18030," #define ENC_PARSE_NAM_EUC_JAPANESE ",euc-jp,euc_jp,eucjp,xeuc,xeucjp," #define ENC_PARSE_NAM_EUC_KOREAN ",euc-kr,euckr,cseuckr," #define ENC_PARSE_NAM_ISO_2022_CN ",ISO-2022-CN,iso2022cn," @@ -143,8 +141,8 @@ extern "C" const WCHAR* Encoding_GetTitleInfoW() { return wchEncodingInfo; } #define ENC_PARSE_NAM_ISO_2022_KR ",ISO-2022-KR,iso2022kr,csiso2022kr," #define ENC_PARSE_NAM_X_CHINESE_CNS ",X-CHINESE-CNS,xchinesecns," #define ENC_PARSE_NAM_JOHAB ",johab," +#define ENC_PARSE_NAM_BIG5_HKSCS ",big5hkscs,cnbig5hkscs,xxbig5hkscs," //#define ENC_PARSE_NAM_ISO_8859_10 "ISO-8859-10,iso885910,windows-28600,windows28600,CP-28600,cp28600," -//#define ENC_PARSE_NAM_BIG5_HKSCS "big5hkscs,cnbig5hkscs,xxbig5hkscs," //============================================================================= // Missing ICONV Strings: @@ -160,9 +158,13 @@ extern "C" const WCHAR* Encoding_GetTitleInfoW() { return wchEncodingInfo; } // "VISCII" -///////////// CED encoding names -///////////// [ EncodingName() , MimeEncodingName(), Encoding(_CED_intern) ] -///////////// Todo: find mapping below and set string above, if missing +/////////////////////////////////////////////////////////////////////////////////////////////// +///////////// ///////////// +///////////// CED encoding names ///////////// +///////////// [ EncodingName() , MimeEncodingName(), Encoding(_CED_intern) ] ///////////// +///////////// TODO: find mapping below and set string above, if missing ///////////// +///////////// ///////////// +/////////////////////////////////////////////////////////////////////////////////////////////// //static const EncodingInfo kEncodingInfoTable[] = { // { "ASCII", "ISO-8859-1", ISO_8859_1}, @@ -328,91 +330,92 @@ extern "C" const WCHAR* Encoding_GetTitleInfoW() { return wchEncodingInfo; } // - extern "C" NP2ENCODING g_Encodings[] = { - /* 000 */{ NCP_ASCII_7BIT | NCP_ANSI | NCP_RECODE, CP_ACP, ENC_PARSE_NAM_ANSI, IDS_ENC_ANSI, UNKNOWN_ENCODING, L"" }, // CPI_ANSI_DEFAULT 0 - /* 001 */{ NCP_ASCII_7BIT | NCP_OEM | NCP_RECODE, CP_OEMCP, ENC_PARSE_NAM_OEM, IDS_ENC_OEM, UNKNOWN_ENCODING, L"" }, // CPI_OEM 1 - /* 002 */{ NCP_UNICODE | NCP_UNICODE_BOM, CP_UTF8, ENC_PARSE_NAM_UTF16LEBOM, IDS_ENC_UTF16LEBOM, UTF16LE, L"" }, // CPI_UNICODEBOM 2 - /* 003 */{ NCP_UNICODE | NCP_UNICODE_REVERSE | NCP_UNICODE_BOM, CP_UTF8, ENC_PARSE_NAM_UTF16BEBOM, IDS_ENC_UTF16BEBOM, UTF16BE, L"" }, // CPI_UNICODEBEBOM 3 - /* 004 */{ NCP_UNICODE | NCP_RECODE, CP_UTF8, ENC_PARSE_NAM_UTF16LE, IDS_ENC_UTF16LE, UTF16LE, L"" }, // CPI_UNICODE 4 - /* 005 */{ NCP_UNICODE | NCP_UNICODE_REVERSE | NCP_RECODE, CP_UTF8, ENC_PARSE_NAM_UTF16BE, IDS_ENC_UTF16BE, UTF16BE, L"" }, // CPI_UNICODEBE 5 - /* 006 */{ NCP_ASCII_7BIT | NCP_UTF8 | NCP_RECODE, CP_UTF8, ENC_PARSE_NAM_UTF8, IDS_ENC_UTF8, UTF8, L"" }, // CPI_UTF8 6 - /* 007 */{ NCP_UTF8 | NCP_UTF8_SIGN, CP_UTF8, ENC_PARSE_NAM_UTF8SIG, IDS_ENC_UTF8SIG, UNKNOWN_ENCODING, L"" }, // CPI_UTF8SIGN 7 - /* 008 */{ NCP_ASCII_7BIT | NCP_EXTERNAL_8BIT | NCP_RECODE, CP_UTF7, ENC_PARSE_NAM_UTF7, IDS_ENC_UTF7, UTF7, L"" }, // CPI_UTF7 8 - /* 009 */{ NCP_ASCII_7BIT | NCP_EXTERNAL_8BIT | NCP_RECODE, 720, ENC_PARSE_NAM_DOS_720, IDS_ENC_DOS_720, UNKNOWN_ENCODING, L"" }, - /* 010 */{ NCP_ASCII_7BIT | NCP_EXTERNAL_8BIT | NCP_RECODE, 28596, ENC_PARSE_NAM_ISO_8859_6, IDS_ENC_ISO_8859_6, ISO_8859_6, L"" }, - /* 011 */{ NCP_ASCII_7BIT | NCP_EXTERNAL_8BIT | NCP_RECODE, 10004, ENC_PARSE_NAM_MAC_ARABIC, IDS_ENC_MAC_ARABIC, UNKNOWN_ENCODING, L"" }, - /* 012 */{ NCP_ASCII_7BIT | NCP_EXTERNAL_8BIT | NCP_RECODE, 1256, ENC_PARSE_NAM_WIN_1256, IDS_ENC_WIN_1256, MSFT_CP1256, L"" }, - /* 013 */{ NCP_ASCII_7BIT | NCP_EXTERNAL_8BIT | NCP_RECODE, 775, ENC_PARSE_NAM_DOS_775, IDS_ENC_DOS_775, UNKNOWN_ENCODING, L"" }, - /* 014 */{ NCP_ASCII_7BIT | NCP_EXTERNAL_8BIT | NCP_RECODE, 28594, ENC_PARSE_NAM_ISO_8859_4, IDS_ENC_ISO_8859_4, ISO_8859_4, L"" }, - /* 015 */{ NCP_ASCII_7BIT | NCP_EXTERNAL_8BIT | NCP_RECODE, 1257, ENC_PARSE_NAM_WIN_1257, IDS_ENC_WIN_1257, MSFT_CP1257, L"" }, - /* 016 */{ NCP_ASCII_7BIT | NCP_EXTERNAL_8BIT | NCP_RECODE, 852, ENC_PARSE_NAM_DOS_852, IDS_ENC_DOS_852, CZECH_CP852, L"" }, - /* 017 */{ NCP_ASCII_7BIT | NCP_EXTERNAL_8BIT | NCP_RECODE, 28592, ENC_PARSE_NAM_ISO_8859_2, IDS_ENC_ISO_8859_2, ISO_8859_2, L"" }, - /* 018 */{ NCP_ASCII_7BIT | NCP_EXTERNAL_8BIT | NCP_RECODE, 10029, ENC_PARSE_NAM_MAC_CENTRAL_EUROP, IDS_ENC_MAC_CENTRAL_EUROP, UNKNOWN_ENCODING, L"" }, - /* 019 */{ NCP_ASCII_7BIT | NCP_EXTERNAL_8BIT | NCP_RECODE, 1250, ENC_PARSE_NAM_WIN_1250, IDS_ENC_WIN_1250, MSFT_CP1250, L"" }, - /* 020 */{ NCP_ASCII_7BIT | NCP_EXTERNAL_8BIT | NCP_RECODE, 936, ENC_PARSE_NAM_GBK_2312, IDS_ENC_GBK_2312, GBK, L"" }, - /* 021 */{ NCP_ASCII_7BIT | NCP_EXTERNAL_8BIT | NCP_RECODE, 10008, ENC_PARSE_NAM_MAC_ZH_CN, IDS_ENC_MAC_ZH_CN, UNKNOWN_ENCODING, L"" }, - /* 022 */{ NCP_ASCII_7BIT | NCP_EXTERNAL_8BIT | NCP_RECODE, 950, ENC_PARSE_NAM_BIG5, IDS_ENC_BIG5, CHINESE_BIG5_CP950, L"" }, - /* 023 */{ NCP_ASCII_7BIT | NCP_EXTERNAL_8BIT | NCP_RECODE, 10002, ENC_PARSE_NAM_MAC_ZH_TW, IDS_ENC_MAC_ZH_TW, UNKNOWN_ENCODING, L"" }, - /* 024 */{ NCP_ASCII_7BIT | NCP_EXTERNAL_8BIT | NCP_RECODE, 10082, ENC_PARSE_NAM_MAC_CROATIAN, IDS_ENC_MAC_CROATIAN, UNKNOWN_ENCODING, L"" }, - /* 025 */{ NCP_ASCII_7BIT | NCP_EXTERNAL_8BIT | NCP_RECODE, 866, ENC_PARSE_NAM_DOS_866, IDS_ENC_DOS_866, RUSSIAN_CP866, L"" }, - /* 026 */{ NCP_ASCII_7BIT | NCP_EXTERNAL_8BIT | NCP_RECODE, 28595, ENC_PARSE_NAM_ISO_8859_5, IDS_ENC_ISO_8859_5, ISO_8859_5, L"" }, - /* 027 */{ NCP_ASCII_7BIT | NCP_EXTERNAL_8BIT | NCP_RECODE, 20866, ENC_PARSE_NAM_KOI8_R, IDS_ENC_KOI8_R, RUSSIAN_KOI8_R, L"" }, - /* 028 */{ NCP_ASCII_7BIT | NCP_EXTERNAL_8BIT | NCP_RECODE, 21866, ENC_PARSE_NAM_KOI8_U, IDS_ENC_KOI8_U, RUSSIAN_KOI8_RU, L"" }, - /* 029 */{ NCP_ASCII_7BIT | NCP_EXTERNAL_8BIT | NCP_RECODE, 10007, ENC_PARSE_NAM_MAC_CYRILLIC, IDS_ENC_MAC_CYRILLIC, UNKNOWN_ENCODING, L"" }, - /* 030 */{ NCP_ASCII_7BIT | NCP_EXTERNAL_8BIT | NCP_RECODE, 1251, ENC_PARSE_NAM_WIN_1251, IDS_ENC_WIN_1251, RUSSIAN_CP1251, L"" }, - /* 031 */{ NCP_ASCII_7BIT | NCP_EXTERNAL_8BIT | NCP_RECODE, 28603, ENC_PARSE_NAM_ISO_8859_13, IDS_ENC_ISO_8859_13, ISO_8859_13, L"" }, - /* 032 */{ NCP_ASCII_7BIT | NCP_EXTERNAL_8BIT | NCP_RECODE, 863, ENC_PARSE_NAM_DOS_863, IDS_ENC_DOS_863, UNKNOWN_ENCODING, L"" }, - /* 033 */{ NCP_ASCII_7BIT | NCP_EXTERNAL_8BIT | NCP_RECODE, 737, ENC_PARSE_NAM_DOS_737, IDS_ENC_DOS_737, UNKNOWN_ENCODING, L"" }, - /* 034 */{ NCP_ASCII_7BIT | NCP_EXTERNAL_8BIT | NCP_RECODE, 28597, ENC_PARSE_NAM_ISO_8859_7, IDS_ENC_ISO_8859_7, ISO_8859_7, L"" }, - /* 035 */{ NCP_ASCII_7BIT | NCP_EXTERNAL_8BIT | NCP_RECODE, 10006, ENC_PARSE_NAM_MAC_GREEK, IDS_ENC_MAC_GREEK, UNKNOWN_ENCODING, L"" }, - /* 036 */{ NCP_ASCII_7BIT | NCP_EXTERNAL_8BIT | NCP_RECODE, 1253, ENC_PARSE_NAM_WIN_1253, IDS_ENC_WIN_1253, MSFT_CP1253, L"" }, - /* 037 */{ NCP_ASCII_7BIT | NCP_EXTERNAL_8BIT | NCP_RECODE, 869, ENC_PARSE_NAM_DOS_869, IDS_ENC_DOS_869, UNKNOWN_ENCODING, L"" }, - /* 038 */{ NCP_ASCII_7BIT | NCP_EXTERNAL_8BIT | NCP_RECODE, 862, ENC_PARSE_NAM_DOS_862, IDS_ENC_DOS_862, UNKNOWN_ENCODING, L"" }, - /* 039 */{ NCP_ASCII_7BIT | NCP_EXTERNAL_8BIT | NCP_RECODE, 38598, ENC_PARSE_NAM_ISO_8859_8_I, IDS_ENC_ISO_8859_8_I, ISO_8859_8_I, L"" }, - /* 040 */{ NCP_ASCII_7BIT | NCP_EXTERNAL_8BIT | NCP_RECODE, 28598, ENC_PARSE_NAM_ISO_8859_8, IDS_ENC_ISO_8859_8, ISO_8859_8, L"" }, - /* 041 */{ NCP_ASCII_7BIT | NCP_EXTERNAL_8BIT | NCP_RECODE, 10005, ENC_PARSE_NAM_MAC_HEBREW, IDS_ENC_MAC_HEBREW, HEBREW_VISUAL, L"" }, - /* 042 */{ NCP_ASCII_7BIT | NCP_EXTERNAL_8BIT | NCP_RECODE, 1255, ENC_PARSE_NAM_WIN_1255, IDS_ENC_WIN_1255, MSFT_CP1255, L"" }, - /* 043 */{ NCP_ASCII_7BIT | NCP_EXTERNAL_8BIT | NCP_RECODE, 861, ENC_PARSE_NAM_DOS_861, IDS_ENC_DOS_861, UNKNOWN_ENCODING, L"" }, - /* 044 */{ NCP_ASCII_7BIT | NCP_EXTERNAL_8BIT | NCP_RECODE, 10079, ENC_PARSE_NAM_MAC_ICELANDIC, IDS_ENC_MAC_ICELANDIC, UNKNOWN_ENCODING, L"" }, - /* 045 */{ NCP_ASCII_7BIT | NCP_EXTERNAL_8BIT | NCP_RECODE, 10001, ENC_PARSE_NAM_MAC_JAPANESE, IDS_ENC_MAC_JAPANESE, UNKNOWN_ENCODING, L"" }, - /* 046 */{ NCP_ASCII_7BIT | NCP_EXTERNAL_8BIT | NCP_RECODE, 932, ENC_PARSE_NAM_SHIFT_JIS, IDS_ENC_SHIFT_JIS, JAPANESE_SHIFT_JIS, L"" }, - /* 047 */{ NCP_ASCII_7BIT | NCP_EXTERNAL_8BIT | NCP_RECODE, 10003, ENC_PARSE_NAM_MAC_KOREAN, IDS_ENC_MAC_KOREAN, UNKNOWN_ENCODING, L"" }, - /* 048 */{ NCP_ASCII_7BIT | NCP_EXTERNAL_8BIT | NCP_RECODE, 949, ENC_PARSE_NAM_WIN_949, IDS_ENC_WIN_949, KOREAN_EUC_KR, L"" }, - /* 049 */{ NCP_ASCII_7BIT | NCP_EXTERNAL_8BIT | NCP_RECODE, 28593, ENC_PARSE_NAM_ISO_8859_3, IDS_ENC_ISO_8859_3, ISO_8859_3, L"" }, - /* 050 */{ NCP_ASCII_7BIT | NCP_EXTERNAL_8BIT | NCP_RECODE, 28605, ENC_PARSE_NAM_ISO_8859_15, IDS_ENC_ISO_8859_15, ISO_8859_15, L"" }, - /* 051 */{ NCP_ASCII_7BIT | NCP_EXTERNAL_8BIT | NCP_RECODE, 865, ENC_PARSE_NAM_DOS_865, IDS_ENC_DOS_865, UNKNOWN_ENCODING, L"" }, - /* 052 */{ NCP_ASCII_7BIT | NCP_EXTERNAL_8BIT | NCP_RECODE, 437, ENC_PARSE_NAM_DOS_437, IDS_ENC_DOS_437, UNKNOWN_ENCODING, L"" }, - /* 053 */{ NCP_ASCII_7BIT | NCP_EXTERNAL_8BIT | NCP_RECODE, 858, ENC_PARSE_NAM_DOS_858, IDS_ENC_DOS_858, UNKNOWN_ENCODING, L"" }, - /* 054 */{ NCP_ASCII_7BIT | NCP_EXTERNAL_8BIT | NCP_RECODE, 860, ENC_PARSE_NAM_DOS_860, IDS_ENC_DOS_860, UNKNOWN_ENCODING, L"" }, - /* 055 */{ NCP_ASCII_7BIT | NCP_EXTERNAL_8BIT | NCP_RECODE, 10000, ENC_PARSE_NAM_MAC_WESTERN_EUROP, IDS_ENC_MAC_WESTERN_EUROP, MACINTOSH_ROMAN, L"" }, - /* 056 */{ NCP_ASCII_7BIT | NCP_EXTERNAL_8BIT | NCP_RECODE, 10021, ENC_PARSE_NAM_MAC_THAI, IDS_ENC_MAC_THAI, UNKNOWN_ENCODING, L"" }, - /* 057 */{ NCP_ASCII_7BIT | NCP_EXTERNAL_8BIT | NCP_RECODE, 874, ENC_PARSE_NAM_WIN_874, IDS_ENC_WIN_874, MSFT_CP874, L"" }, - /* 058 */{ NCP_ASCII_7BIT | NCP_EXTERNAL_8BIT | NCP_RECODE, 857, ENC_PARSE_NAM_DOS_857, IDS_ENC_DOS_857, UNKNOWN_ENCODING, L"" }, - /* 059 */{ NCP_ASCII_7BIT | NCP_EXTERNAL_8BIT | NCP_RECODE, 28599, ENC_PARSE_NAM_ISO_8859_9, IDS_ENC_ISO_8859_9, ISO_8859_9, L"" }, - /* 060 */{ NCP_ASCII_7BIT | NCP_EXTERNAL_8BIT | NCP_RECODE, 10081, ENC_PARSE_NAM_MAC_TURKISH, IDS_ENC_MAC_TURKISH, UNKNOWN_ENCODING, L"" }, - /* 061 */{ NCP_ASCII_7BIT | NCP_EXTERNAL_8BIT | NCP_RECODE, 1254, ENC_PARSE_NAM_WIN_1254, IDS_ENC_WIN_1254, MSFT_CP1254, L"" }, - /* 062 */{ NCP_ASCII_7BIT | NCP_EXTERNAL_8BIT | NCP_RECODE, 10017, ENC_PARSE_NAM_MAC_UKRAINIAN, IDS_ENC_MAC_UKRAINIAN, UNKNOWN_ENCODING, L"" }, - /* 063 */{ NCP_ASCII_7BIT | NCP_EXTERNAL_8BIT | NCP_RECODE, 1258, ENC_PARSE_NAM_WIN_1258, IDS_ENC_WIN_1258, UNKNOWN_ENCODING, L"" }, - /* 064 */{ NCP_ASCII_7BIT | NCP_EXTERNAL_8BIT | NCP_RECODE, 850, ENC_PARSE_NAM_DOS_850, IDS_ENC_DOS_850, UNKNOWN_ENCODING, L"" }, - /* 065 */{ NCP_ASCII_7BIT | NCP_EXTERNAL_8BIT | NCP_RECODE, 28591, ENC_PARSE_NAM_ISO_8859_1, IDS_ENC_ISO_8859_1, ISO_8859_1, L"" }, - /* 066 */{ NCP_ASCII_7BIT | NCP_EXTERNAL_8BIT | NCP_RECODE, 10010, ENC_PARSE_NAM_MAC_ROMANIAN, IDS_ENC_MAC_ROMANIAN, MACINTOSH_ROMAN, L"" }, - /* 067 */{ NCP_ASCII_7BIT | NCP_EXTERNAL_8BIT | NCP_RECODE, 1252, ENC_PARSE_NAM_WIN_1252, IDS_ENC_WIN_1252, MSFT_CP1252, L"" }, - /* 068 */{ NCP_EXTERNAL_8BIT | NCP_RECODE, 37, ENC_PARSE_NAM_IBM_EBCDIC_US, IDS_ENC_IBM_EBCDIC_US, UNKNOWN_ENCODING, L"" }, - /* 069 */{ NCP_EXTERNAL_8BIT | NCP_RECODE, 500, ENC_PARSE_NAM_IBM_EBCDIC_INT, IDS_ENC_IBM_EBCDIC_INT, UNKNOWN_ENCODING, L"" }, - /* 070 */{ NCP_EXTERNAL_8BIT | NCP_RECODE, 875, ENC_PARSE_NAM_IBM_EBCDIC_GR, IDS_ENC_IBM_EBCDIC_GR, UNKNOWN_ENCODING, L"" }, - /* 071 */{ NCP_EXTERNAL_8BIT | NCP_RECODE, 1026, ENC_PARSE_NAM_IBM_EBCDIC_LAT_5, IDS_ENC_IBM_EBCDIC_LAT_5, UNKNOWN_ENCODING, L"" }, - /* 072 */{ NCP_ASCII_7BIT | NCP_EXTERNAL_8BIT | NCP_RECODE, 54936, ENC_PARSE_NAM_GB18030, IDS_ENC_GB18030, GB18030, L"" }, // Chinese Simplified (GB18030) - /* 073 */{ NCP_ASCII_7BIT | NCP_EXTERNAL_8BIT | NCP_RECODE, 20932, ENC_PARSE_NAM_EUC_JAPANESE, IDS_ENC_EUC_JAPANESE, JAPANESE_EUC_JP, L"" }, // Japanese (EUC) - /* 074 */{ NCP_ASCII_7BIT | NCP_EXTERNAL_8BIT | NCP_RECODE, 51949, ENC_PARSE_NAM_EUC_KOREAN, IDS_ENC_EUC_KOREAN, KOREAN_EUC_KR, L"" }, // Korean (EUC) - /* 075 */{ NCP_ASCII_7BIT | NCP_EXTERNAL_8BIT | NCP_RECODE, 50229, ENC_PARSE_NAM_ISO_2022_CN, IDS_ENC_ISO_2022_CN, ISO_2022_CN, L"" }, // Chinese Traditional (ISO-2022-CN) - /* 076 */{ NCP_ASCII_7BIT | NCP_EXTERNAL_8BIT | NCP_RECODE, 52936, ENC_PARSE_NAM_HZ_GB2312, IDS_ENC_HZ_GB2312, HZ_GB_2312, L"" }, // Chinese Simplified (HZ-GB2312) - /* 077 */{ NCP_ASCII_7BIT | NCP_EXTERNAL_8BIT | NCP_RECODE, 50220, ENC_PARSE_NAM_ISO_2022_JP, IDS_ENC_ISO_2022_JP, KDDI_ISO_2022_JP, L"" }, // Japanese (JIS) - /* 078 */{ NCP_ASCII_7BIT | NCP_EXTERNAL_8BIT | NCP_RECODE, 50225, ENC_PARSE_NAM_ISO_2022_KR, IDS_ENC_ISO_2022_KR, ISO_2022_KR, L"" }, // Korean (ISO-2022-KR) - /* 079 */{ NCP_ASCII_7BIT | NCP_EXTERNAL_8BIT | NCP_RECODE, 20000, ENC_PARSE_NAM_X_CHINESE_CNS, IDS_ENC_X_CHINESE_CNS, CHINESE_CNS, L"" }, // Chinese Traditional (CNS) - /* 080 */{ NCP_ASCII_7BIT | NCP_EXTERNAL_8BIT | NCP_RECODE, 1361, ENC_PARSE_NAM_JOHAB, IDS_ENC_JOHAB, UNKNOWN_ENCODING, L"" } // Korean (Johab) + /* 000 */{ NCP_ASCII_7BIT | NCP_ANSI | NCP_RECODE, CP_ACP, ENC_PARSE_NAM_ANSI, IDS_ENC_ANSI, L"" }, // CPI_ANSI_DEFAULT 0 + /* 001 */{ NCP_ASCII_7BIT | NCP_OEM | NCP_RECODE, CP_OEMCP, ENC_PARSE_NAM_OEM, IDS_ENC_OEM, L"" }, // CPI_OEM 1 + /* 002 */{ NCP_UNICODE | NCP_UNICODE_BOM, CP_UTF8, ENC_PARSE_NAM_UTF16LEBOM, IDS_ENC_UTF16LEBOM, L"" }, // CPI_UNICODEBOM 2 + /* 003 */{ NCP_UNICODE | NCP_UNICODE_REVERSE | NCP_UNICODE_BOM, CP_UTF8, ENC_PARSE_NAM_UTF16BEBOM, IDS_ENC_UTF16BEBOM, L"" }, // CPI_UNICODEBEBOM 3 + /* 004 */{ NCP_UNICODE | NCP_RECODE, CP_UTF8, ENC_PARSE_NAM_UTF16LE, IDS_ENC_UTF16LE, L"" }, // CPI_UNICODE 4 + /* 005 */{ NCP_UNICODE | NCP_UNICODE_REVERSE | NCP_RECODE, CP_UTF8, ENC_PARSE_NAM_UTF16BE, IDS_ENC_UTF16BE, L"" }, // CPI_UNICODEBE 5 + /* 006 */{ NCP_ASCII_7BIT | NCP_UTF8 | NCP_RECODE, CP_UTF8, ENC_PARSE_NAM_UTF8, IDS_ENC_UTF8, L"" }, // CPI_UTF8 6 + /* 007 */{ NCP_UTF8 | NCP_UTF8_SIGN, CP_UTF8, ENC_PARSE_NAM_UTF8SIG, IDS_ENC_UTF8SIG, L"" }, // CPI_UTF8SIGN 7 + /* 008 */{ NCP_ASCII_7BIT | NCP_EXTERNAL_8BIT | NCP_RECODE, CP_UTF7, ENC_PARSE_NAM_UTF7, IDS_ENC_UTF7, L"" }, // CPI_UTF7 8 + /* 009 */{ NCP_ASCII_7BIT | NCP_EXTERNAL_8BIT | NCP_RECODE, 720, ENC_PARSE_NAM_DOS_720, IDS_ENC_DOS_720, L"" }, + /* 010 */{ NCP_ASCII_7BIT | NCP_EXTERNAL_8BIT | NCP_RECODE, 28596, ENC_PARSE_NAM_ISO_8859_6, IDS_ENC_ISO_8859_6, L"" }, + /* 011 */{ NCP_ASCII_7BIT | NCP_EXTERNAL_8BIT | NCP_RECODE, 10004, ENC_PARSE_NAM_MAC_ARABIC, IDS_ENC_MAC_ARABIC, L"" }, + /* 012 */{ NCP_ASCII_7BIT | NCP_EXTERNAL_8BIT | NCP_RECODE, 1256, ENC_PARSE_NAM_WIN_1256, IDS_ENC_WIN_1256, L"" }, + /* 013 */{ NCP_ASCII_7BIT | NCP_EXTERNAL_8BIT | NCP_RECODE, 775, ENC_PARSE_NAM_DOS_775, IDS_ENC_DOS_775, L"" }, + /* 014 */{ NCP_ASCII_7BIT | NCP_EXTERNAL_8BIT | NCP_RECODE, 28594, ENC_PARSE_NAM_ISO_8859_4, IDS_ENC_ISO_8859_4, L"" }, + /* 015 */{ NCP_ASCII_7BIT | NCP_EXTERNAL_8BIT | NCP_RECODE, 1257, ENC_PARSE_NAM_WIN_1257, IDS_ENC_WIN_1257, L"" }, + /* 016 */{ NCP_ASCII_7BIT | NCP_EXTERNAL_8BIT | NCP_RECODE, 852, ENC_PARSE_NAM_DOS_852, IDS_ENC_DOS_852, L"" }, + /* 017 */{ NCP_ASCII_7BIT | NCP_EXTERNAL_8BIT | NCP_RECODE, 28592, ENC_PARSE_NAM_ISO_8859_2, IDS_ENC_ISO_8859_2, L"" }, + /* 018 */{ NCP_ASCII_7BIT | NCP_EXTERNAL_8BIT | NCP_RECODE, 10029, ENC_PARSE_NAM_MAC_CENTRAL_EUROP, IDS_ENC_MAC_CENTRAL_EUROP, L"" }, + /* 019 */{ NCP_ASCII_7BIT | NCP_EXTERNAL_8BIT | NCP_RECODE, 1250, ENC_PARSE_NAM_WIN_1250, IDS_ENC_WIN_1250, L"" }, + /* 020 */{ NCP_ASCII_7BIT | NCP_EXTERNAL_8BIT | NCP_RECODE, 936, ENC_PARSE_NAM_GBK_2312, IDS_ENC_GBK_2312, L"" }, + /* 021 */{ NCP_ASCII_7BIT | NCP_EXTERNAL_8BIT | NCP_RECODE, 10008, ENC_PARSE_NAM_MAC_ZH_CN, IDS_ENC_MAC_ZH_CN, L"" }, + /* 022 */{ NCP_ASCII_7BIT | NCP_EXTERNAL_8BIT | NCP_RECODE, 950, ENC_PARSE_NAM_BIG5, IDS_ENC_BIG5, L"" }, + /* 023 */{ NCP_ASCII_7BIT | NCP_EXTERNAL_8BIT | NCP_RECODE, 10002, ENC_PARSE_NAM_MAC_ZH_TW, IDS_ENC_MAC_ZH_TW, L"" }, + /* 024 */{ NCP_ASCII_7BIT | NCP_EXTERNAL_8BIT | NCP_RECODE, 10082, ENC_PARSE_NAM_MAC_CROATIAN, IDS_ENC_MAC_CROATIAN, L"" }, + /* 025 */{ NCP_ASCII_7BIT | NCP_EXTERNAL_8BIT | NCP_RECODE, 866, ENC_PARSE_NAM_DOS_866, IDS_ENC_DOS_866, L"" }, + /* 026 */{ NCP_ASCII_7BIT | NCP_EXTERNAL_8BIT | NCP_RECODE, 28595, ENC_PARSE_NAM_ISO_8859_5, IDS_ENC_ISO_8859_5, L"" }, + /* 027 */{ NCP_ASCII_7BIT | NCP_EXTERNAL_8BIT | NCP_RECODE, 20866, ENC_PARSE_NAM_KOI8_R, IDS_ENC_KOI8_R, L"" }, + /* 028 */{ NCP_ASCII_7BIT | NCP_EXTERNAL_8BIT | NCP_RECODE, 21866, ENC_PARSE_NAM_KOI8_U, IDS_ENC_KOI8_U, L"" }, + /* 029 */{ NCP_ASCII_7BIT | NCP_EXTERNAL_8BIT | NCP_RECODE, 10007, ENC_PARSE_NAM_MAC_CYRILLIC, IDS_ENC_MAC_CYRILLIC, L"" }, + /* 030 */{ NCP_ASCII_7BIT | NCP_EXTERNAL_8BIT | NCP_RECODE, 1251, ENC_PARSE_NAM_WIN_1251, IDS_ENC_WIN_1251, L"" }, + /* 031 */{ NCP_ASCII_7BIT | NCP_EXTERNAL_8BIT | NCP_RECODE, 28603, ENC_PARSE_NAM_ISO_8859_13, IDS_ENC_ISO_8859_13, L"" }, + /* 032 */{ NCP_ASCII_7BIT | NCP_EXTERNAL_8BIT | NCP_RECODE, 863, ENC_PARSE_NAM_DOS_863, IDS_ENC_DOS_863, L"" }, + /* 033 */{ NCP_ASCII_7BIT | NCP_EXTERNAL_8BIT | NCP_RECODE, 737, ENC_PARSE_NAM_DOS_737, IDS_ENC_DOS_737, L"" }, + /* 034 */{ NCP_ASCII_7BIT | NCP_EXTERNAL_8BIT | NCP_RECODE, 28597, ENC_PARSE_NAM_ISO_8859_7, IDS_ENC_ISO_8859_7, L"" }, + /* 035 */{ NCP_ASCII_7BIT | NCP_EXTERNAL_8BIT | NCP_RECODE, 10006, ENC_PARSE_NAM_MAC_GREEK, IDS_ENC_MAC_GREEK, L"" }, + /* 036 */{ NCP_ASCII_7BIT | NCP_EXTERNAL_8BIT | NCP_RECODE, 1253, ENC_PARSE_NAM_WIN_1253, IDS_ENC_WIN_1253, L"" }, + /* 037 */{ NCP_ASCII_7BIT | NCP_EXTERNAL_8BIT | NCP_RECODE, 869, ENC_PARSE_NAM_DOS_869, IDS_ENC_DOS_869, L"" }, + /* 038 */{ NCP_ASCII_7BIT | NCP_EXTERNAL_8BIT | NCP_RECODE, 862, ENC_PARSE_NAM_DOS_862, IDS_ENC_DOS_862, L"" }, + /* 039 */{ NCP_ASCII_7BIT | NCP_EXTERNAL_8BIT | NCP_RECODE, 38598, ENC_PARSE_NAM_ISO_8859_8_I, IDS_ENC_ISO_8859_8_I, L"" }, + /* 040 */{ NCP_ASCII_7BIT | NCP_EXTERNAL_8BIT | NCP_RECODE, 28598, ENC_PARSE_NAM_ISO_8859_8, IDS_ENC_ISO_8859_8, L"" }, + /* 041 */{ NCP_ASCII_7BIT | NCP_EXTERNAL_8BIT | NCP_RECODE, 10005, ENC_PARSE_NAM_MAC_HEBREW, IDS_ENC_MAC_HEBREW, L"" }, + /* 042 */{ NCP_ASCII_7BIT | NCP_EXTERNAL_8BIT | NCP_RECODE, 1255, ENC_PARSE_NAM_WIN_1255, IDS_ENC_WIN_1255, L"" }, + /* 043 */{ NCP_ASCII_7BIT | NCP_EXTERNAL_8BIT | NCP_RECODE, 861, ENC_PARSE_NAM_DOS_861, IDS_ENC_DOS_861, L"" }, + /* 044 */{ NCP_ASCII_7BIT | NCP_EXTERNAL_8BIT | NCP_RECODE, 10079, ENC_PARSE_NAM_MAC_ICELANDIC, IDS_ENC_MAC_ICELANDIC, L"" }, + /* 045 */{ NCP_ASCII_7BIT | NCP_EXTERNAL_8BIT | NCP_RECODE, 10001, ENC_PARSE_NAM_MAC_JAPANESE, IDS_ENC_MAC_JAPANESE, L"" }, + /* 046 */{ NCP_ASCII_7BIT | NCP_EXTERNAL_8BIT | NCP_RECODE, 932, ENC_PARSE_NAM_SHIFT_JIS, IDS_ENC_SHIFT_JIS, L"" }, + /* 047 */{ NCP_ASCII_7BIT | NCP_EXTERNAL_8BIT | NCP_RECODE, 10003, ENC_PARSE_NAM_MAC_KOREAN, IDS_ENC_MAC_KOREAN, L"" }, + /* 048 */{ NCP_ASCII_7BIT | NCP_EXTERNAL_8BIT | NCP_RECODE, 949, ENC_PARSE_NAM_WIN_949, IDS_ENC_WIN_949, L"" }, + /* 049 */{ NCP_ASCII_7BIT | NCP_EXTERNAL_8BIT | NCP_RECODE, 28593, ENC_PARSE_NAM_ISO_8859_3, IDS_ENC_ISO_8859_3, L"" }, + /* 050 */{ NCP_ASCII_7BIT | NCP_EXTERNAL_8BIT | NCP_RECODE, 28605, ENC_PARSE_NAM_ISO_8859_15, IDS_ENC_ISO_8859_15, L"" }, + /* 051 */{ NCP_ASCII_7BIT | NCP_EXTERNAL_8BIT | NCP_RECODE, 865, ENC_PARSE_NAM_DOS_865, IDS_ENC_DOS_865, L"" }, + /* 052 */{ NCP_ASCII_7BIT | NCP_EXTERNAL_8BIT | NCP_RECODE, 437, ENC_PARSE_NAM_DOS_437, IDS_ENC_DOS_437, L"" }, + /* 053 */{ NCP_ASCII_7BIT | NCP_EXTERNAL_8BIT | NCP_RECODE, 858, ENC_PARSE_NAM_DOS_858, IDS_ENC_DOS_858, L"" }, + /* 054 */{ NCP_ASCII_7BIT | NCP_EXTERNAL_8BIT | NCP_RECODE, 860, ENC_PARSE_NAM_DOS_860, IDS_ENC_DOS_860, L"" }, + /* 055 */{ NCP_ASCII_7BIT | NCP_EXTERNAL_8BIT | NCP_RECODE, 10000, ENC_PARSE_NAM_MAC_WESTERN_EUROP, IDS_ENC_MAC_WESTERN_EUROP, L"" }, + /* 056 */{ NCP_ASCII_7BIT | NCP_EXTERNAL_8BIT | NCP_RECODE, 10021, ENC_PARSE_NAM_MAC_THAI, IDS_ENC_MAC_THAI, L"" }, + /* 057 */{ NCP_ASCII_7BIT | NCP_EXTERNAL_8BIT | NCP_RECODE, 874, ENC_PARSE_NAM_WIN_874, IDS_ENC_WIN_874, L"" }, + /* 058 */{ NCP_ASCII_7BIT | NCP_EXTERNAL_8BIT | NCP_RECODE, 857, ENC_PARSE_NAM_DOS_857, IDS_ENC_DOS_857, L"" }, + /* 059 */{ NCP_ASCII_7BIT | NCP_EXTERNAL_8BIT | NCP_RECODE, 28599, ENC_PARSE_NAM_ISO_8859_9, IDS_ENC_ISO_8859_9, L"" }, + /* 060 */{ NCP_ASCII_7BIT | NCP_EXTERNAL_8BIT | NCP_RECODE, 10081, ENC_PARSE_NAM_MAC_TURKISH, IDS_ENC_MAC_TURKISH, L"" }, + /* 061 */{ NCP_ASCII_7BIT | NCP_EXTERNAL_8BIT | NCP_RECODE, 1254, ENC_PARSE_NAM_WIN_1254, IDS_ENC_WIN_1254, L"" }, + /* 062 */{ NCP_ASCII_7BIT | NCP_EXTERNAL_8BIT | NCP_RECODE, 10017, ENC_PARSE_NAM_MAC_UKRAINIAN, IDS_ENC_MAC_UKRAINIAN, L"" }, + /* 063 */{ NCP_ASCII_7BIT | NCP_EXTERNAL_8BIT | NCP_RECODE, 1258, ENC_PARSE_NAM_WIN_1258, IDS_ENC_WIN_1258, L"" }, + /* 064 */{ NCP_ASCII_7BIT | NCP_EXTERNAL_8BIT | NCP_RECODE, 850, ENC_PARSE_NAM_DOS_850, IDS_ENC_DOS_850, L"" }, + /* 065 */{ NCP_ASCII_7BIT | NCP_EXTERNAL_8BIT | NCP_RECODE, 28591, ENC_PARSE_NAM_ISO_8859_1, IDS_ENC_ISO_8859_1, L"" }, + /* 066 */{ NCP_ASCII_7BIT | NCP_EXTERNAL_8BIT | NCP_RECODE, 10010, ENC_PARSE_NAM_MAC_ROMANIAN, IDS_ENC_MAC_ROMANIAN, L"" }, + /* 067 */{ NCP_ASCII_7BIT | NCP_EXTERNAL_8BIT | NCP_RECODE, 1252, ENC_PARSE_NAM_WIN_1252, IDS_ENC_WIN_1252, L"" }, + /* 068 */{ NCP_EXTERNAL_8BIT | NCP_RECODE, 37, ENC_PARSE_NAM_IBM_EBCDIC_US, IDS_ENC_IBM_EBCDIC_US, L"" }, + /* 069 */{ NCP_EXTERNAL_8BIT | NCP_RECODE, 500, ENC_PARSE_NAM_IBM_EBCDIC_INT, IDS_ENC_IBM_EBCDIC_INT, L"" }, + /* 070 */{ NCP_EXTERNAL_8BIT | NCP_RECODE, 875, ENC_PARSE_NAM_IBM_EBCDIC_GR, IDS_ENC_IBM_EBCDIC_GR, L"" }, + /* 071 */{ NCP_EXTERNAL_8BIT | NCP_RECODE, 1026, ENC_PARSE_NAM_IBM_EBCDIC_LAT_5, IDS_ENC_IBM_EBCDIC_LAT_5, L"" }, + /* 072 */{ NCP_ASCII_7BIT | NCP_EXTERNAL_8BIT | NCP_RECODE, 54936, ENC_PARSE_NAM_GB18030, IDS_ENC_GB18030, L"" }, // Chinese Simplified (GB18030) + /* 073 */{ NCP_ASCII_7BIT | NCP_EXTERNAL_8BIT | NCP_RECODE, 20932, ENC_PARSE_NAM_EUC_JAPANESE, IDS_ENC_EUC_JAPANESE, L"" }, // Japanese (EUC) + /* 074 */{ NCP_ASCII_7BIT | NCP_EXTERNAL_8BIT | NCP_RECODE, 51949, ENC_PARSE_NAM_EUC_KOREAN, IDS_ENC_EUC_KOREAN, L"" }, // Korean (EUC) + /* 075 */{ NCP_ASCII_7BIT | NCP_EXTERNAL_8BIT | NCP_RECODE, 50229, ENC_PARSE_NAM_ISO_2022_CN, IDS_ENC_ISO_2022_CN, L"" }, // Chinese Traditional (ISO-2022-CN) + /* 076 */{ NCP_ASCII_7BIT | NCP_EXTERNAL_8BIT | NCP_RECODE, 52936, ENC_PARSE_NAM_HZ_GB2312, IDS_ENC_HZ_GB2312, L"" }, // Chinese Simplified (HZ-GB2312) + /* 077 */{ NCP_ASCII_7BIT | NCP_EXTERNAL_8BIT | NCP_RECODE, 50220, ENC_PARSE_NAM_ISO_2022_JP, IDS_ENC_ISO_2022_JP, L"" }, // Japanese (JIS) + /* 078 */{ NCP_ASCII_7BIT | NCP_EXTERNAL_8BIT | NCP_RECODE, 50225, ENC_PARSE_NAM_ISO_2022_KR, IDS_ENC_ISO_2022_KR, L"" }, // Korean (ISO-2022-KR) + /* 079 */{ NCP_ASCII_7BIT | NCP_EXTERNAL_8BIT | NCP_RECODE, 20000, ENC_PARSE_NAM_X_CHINESE_CNS, IDS_ENC_X_CHINESE_CNS, L"" }, // Chinese Traditional (CNS) + /* 080 */{ NCP_ASCII_7BIT | NCP_EXTERNAL_8BIT | NCP_RECODE, 1361, ENC_PARSE_NAM_JOHAB, IDS_ENC_JOHAB, L"" }, // Korean (Johab) + // may need special codepage installation on some + /* 081 */{ NCP_EXTERNAL_8BIT | NCP_RECODE, 951, ENC_PARSE_NAM_BIG5_HKSCS, IDS_ENC_BIG5_HKSCS, L"" } // Chinese (Hong Kong Supplementary Character Set) + ///* 079 */{ NCP_EXTERNAL_8BIT | NCP_RECODE, 28600, ENC_PARSE_NAM_ISO_8859_10, IDS_ENC_ISO_8859_10, ISO_8859_10, L"" }, // Nordic (ISO 8859-10) - ///* 080 */{ NCP_EXTERNAL_8BIT | NCP_RECODE, 951, ENC_PARSE_NAM_BIG5_HKSCS, IDS_ENC_BIG5_HKSCS, BIG5_HKSCS, L"" } // Chinese (Hong Kong Supplementary Character Set) #if 0 @@ -482,9 +485,9 @@ extern "C" NP2ENCODING g_Encodings[] = { /* 137 *///{ NCP_EXTERNAL_8BIT|NCP_RECODE, 57011, "x-iscii-pa,xisciipa,", 00000, L"" }, // ISCII Panjabi }; -constexpr int _CountOfEncodings() { return ARRAYSIZE(g_Encodings); } +constexpr cpi_enc_t _CountOfEncodings() { return static_cast(ARRAYSIZE(g_Encodings)); } -extern "C" int Encoding_CountOf() +extern "C" cpi_enc_t Encoding_CountOf() { return _CountOfEncodings(); } @@ -492,31 +495,40 @@ extern "C" int Encoding_CountOf() //============================================================================= -constexpr int _MapCPI2CEDEncoding(const int cpiEncoding) +constexpr Encoding _MapCPI2CEDEncoding(const cpi_enc_t cpiEncoding) { - if ((cpiEncoding < 0) || (cpiEncoding >= _CountOfEncodings())) { - return UNKNOWN_ENCODING; // CPI_NONE, CPI_GET + if ((cpiEncoding < 0) || (cpiEncoding >= _CountOfEncodings())) { return UNKNOWN_ENCODING; } + + char parseNames[256] = { '\0' }; + StringCchCopyA(parseNames, 256, g_Encodings[cpiEncoding].pszParseNames); + if (parseNames[0] == '\0') { return UNKNOWN_ENCODING; } + + char* p = &(parseNames[1]); // skip 1st null + while (*p != '\0') { + if (*p == ',') { *p = '\0'; } + ++p; } - return g_Encodings[cpiEncoding].iCEDEncoding; -} -// ============================================================================ + *(++p) = '\0'; // ensure double '\0' at the end -extern "C" void ChangeEncodingCodePage(int cpi, UINT newCP) -{ - int iCED = _MapCPI2CEDEncoding(cpi); - g_Encodings[cpi].uCodePage = newCP; - g_Encodings[cpi].iCEDEncoding = iCED; + Encoding encoding = UNKNOWN_ENCODING; + + p = &(parseNames[1]); // skip 1st null + while (*p != '\0') { + if (EncodingFromName(p, &encoding)) { break; } + for (; *p != '\0'; ++p) {} // next + ++p; // double null at end + } + return encoding; } // ============================================================================ - -constexpr int _MapStdEncodingString2CPI(const char* encStrg, float* pConfidence, - const char* const text, const size_t len) +constexpr cpi_enc_t _MapStdEncodingString2CPI(const char* encStrg, float* pConfidence, + const char* const text, const size_t len) { float const confidence = *pConfidence; - int cpiEncoding = CPI_NONE; + cpi_enc_t cpiEncoding = CPI_NONE; if (encStrg && (encStrg[0] != '\0')) { // preprocessing: special cases @@ -547,7 +559,7 @@ constexpr int _MapStdEncodingString2CPI(const char* encStrg, float* pConfidence, *pConfidence = Encoding_IsNONE(cpiEncoding) ? 0.0f : confidence; return cpiEncoding; } -// ---------------------------------------------------------------------------- +// ============================================================================ // ============================================================================ @@ -583,19 +595,17 @@ int AnalyzeText_CED StringCchCopyA(encodingStrg, cch, charset); // CED confidence = isReliable ? ReliableCEDConfThresh : UnReliableCEDConfThresh; + cpiEncoding = _MapStdEncodingString2CPI(charset, &confidence, text, len); - //int cpiEncoding = _MapCEDEncoding2CPI(encoding, text, len); +#if 1 + Encoding const check_enc = _MapCPI2CEDEncoding(cpiEncoding); + if (encoding != check_enc) { + *pConfidence = 0.0; + } +#endif - //if (cpiEncoding == CPI_NONE) - //{ - // // we are not able to find a mapping, so guess any - // cpiEncoding = _FindSimilarCPI(encoding); - // *pIsReliable = false; - //} - - - * pConfidence = confidence; + *pConfidence = confidence; return cpiEncoding; } // ============================================================================ @@ -658,32 +668,41 @@ inline float max_f(float x, float y) { return (x > y) ? x : y; } extern "C" int Encoding_AnalyzeText ( - const char* const text, const size_t len, + const char* const text, const size_t len, float* confidence_io, const int encodingHint) { + if (len == 0) + { + _SetEncodingTitleInfo("", CPI_NONE, 0.0f, "", CPI_NONE, 0.0f); + *confidence_io = 0.0f; + return CPI_NONE; + } + + constexpr int MAX_ENC_STRG_LEN = 128; + float ucd_cnf = 0.0f; - char encodingStrg_UCD[128] = { '\0' }; + char encodingStrg_UCD[MAX_ENC_STRG_LEN] = { '\0' }; int cpiEncoding_UCD = CPI_NONE; float ced_cnf = 0.0f; - char encodingStrg_CED[128] = { '\0' }; + char encodingStrg_CED[MAX_ENC_STRG_LEN] = { '\0' }; int cpiEncoding_CED = CPI_NONE; size_t const largeFile = static_cast(Settings2.FileLoadWarningMB) * 1024LL * 1024LL; - + if (len < largeFile) { // small file: do SERIAL encoding detection - cpiEncoding_UCD = AnalyzeText_UCHARDET(text, len, encodingHint, &ucd_cnf, encodingStrg_UCD, 128); - cpiEncoding_CED = AnalyzeText_CED(text, len, encodingHint, &ced_cnf, encodingStrg_CED, 128); + cpiEncoding_UCD = AnalyzeText_UCHARDET(text, len, encodingHint, &ucd_cnf, encodingStrg_UCD, MAX_ENC_STRG_LEN); + cpiEncoding_CED = AnalyzeText_CED(text, len, encodingHint, &ced_cnf, encodingStrg_CED, MAX_ENC_STRG_LEN); } else { // large file: start ASYNC PARALLEL encoding detection std::future cpiUCD = std::async(std::launch::async, AnalyzeText_UCHARDET, - text, len, encodingHint, &ucd_cnf, encodingStrg_UCD, 128); + text, len, encodingHint, &ucd_cnf, encodingStrg_UCD, MAX_ENC_STRG_LEN); std::future cpiCED = std::async(std::launch::async, AnalyzeText_CED, - text, len, encodingHint, &ced_cnf, encodingStrg_CED, 128); + text, len, encodingHint, &ced_cnf, encodingStrg_CED, MAX_ENC_STRG_LEN); cpiEncoding_UCD = cpiUCD.get(); cpiEncoding_CED = cpiCED.get(); @@ -693,6 +712,18 @@ extern "C" int Encoding_AnalyzeText float const ucd_confidence = ucd_cnf; float const ced_confidence = ced_cnf; + + // -------------------------------------------------------------------------- + // GB18030 (UCD always) to GBK detection adjustment + // -------------------------------------------------------------------------- + if ((Encoding_GetCodePage(cpiEncoding_UCD) == 54936 /*GB-18030*/) && + (Encoding_GetCodePage(cpiEncoding_CED) == 936 /*GBK,GB-2312*/)) + { + // CED (util/encodings/encoding.cc) changed to predict GB18030 if applicable + cpiEncoding_UCD = cpiEncoding_CED; // choose widely used encoding + } + + // -------------------------------------------------------------------------- // vote for encoding prognosis based on confidence levels or reliability // -------------------------------------------------------------------------- @@ -706,8 +737,8 @@ extern "C" int Encoding_AnalyzeText } else { // --- ambiguous results --- - if (Encoding_IsNONE(cpiEncoding_UCD)) - { + if (Encoding_IsNONE(cpiEncoding_UCD)) + { // _NO_ UCHARDET rely on CED iAnalyzedEncoding = cpiEncoding_CED; confidence = ced_confidence; @@ -728,10 +759,8 @@ extern "C" int Encoding_AnalyzeText } } - if (Flags.bDevDebugMode) { - _SetEncodingTitleInfo(encodingStrg_UCD, cpiEncoding_UCD, ucd_confidence, - encodingStrg_CED, cpiEncoding_CED, ced_confidence); - } + _SetEncodingTitleInfo(encodingStrg_UCD, cpiEncoding_UCD, ucd_confidence, + encodingStrg_CED, cpiEncoding_CED, ced_confidence); *confidence_io = confidence; return iAnalyzedEncoding; @@ -739,6 +768,7 @@ extern "C" int Encoding_AnalyzeText // ============================================================================ + //============================================================================= // // _SetEncodingTitleInfo() @@ -746,41 +776,43 @@ extern "C" int Encoding_AnalyzeText static void _SetEncodingTitleInfo(const char* encodingUCD, int encUCD, float ucd_confidence, const char* encodingCED, int encCED, float ced_confidence) { - char tmpBuf[128] = { '\0' }; + if (Flags.bDevDebugMode) { - StringCchCopyA(chEncodingInfo, ARRAYSIZE(chEncodingInfo), "UCD='"); - if (encUCD >= 0) - { - StringCchCatA(chEncodingInfo, ARRAYSIZE(chEncodingInfo), encodingUCD); - } - else { - const char* ukn = (!encodingUCD || (encodingUCD[0] == '\0')) ? "" : encodingUCD; - StringCchCatA(chEncodingInfo, ARRAYSIZE(chEncodingInfo), (encUCD == CPI_ASCII_7BIT) ? "ASCII" : ukn); - } - StringCchPrintfA(tmpBuf, 128, "' Conf=%.0f%%", ucd_confidence * 100.0f); - StringCchCatA(chEncodingInfo, ARRAYSIZE(chEncodingInfo), tmpBuf); + char tmpBuf[128] = { '\0' }; - StringCchCatA(chEncodingInfo, ARRAYSIZE(chEncodingInfo), " || CED='"); - if (encCED >= 0) - { - //WideCharToMultiByte(CP_UTF7, 0, Encoding_GetLabel(encCED), -1, chEncodingLabel, ARRAYSIZE(chEncodingLabel), 0, 0); - StringCchCatA(chEncodingInfo, ARRAYSIZE(chEncodingInfo), encodingCED); - } - else { - StringCchCatA(chEncodingInfo, ARRAYSIZE(chEncodingInfo), (encCED == CPI_ASCII_7BIT) ? "ASCII" : ""); - } - if ((encCED >= 0) || (encCED == CPI_ASCII_7BIT)) { - bool const ced_reliable = (ced_confidence >= Settings2.ReliableCEDConfidenceMapping); - bool const ced_not_reliable = (ced_confidence <= Settings2.UnReliableCEDConfidenceMapping); - StringCchPrintfA(tmpBuf, 128, "' Conf=%.0f%% [%s])", ced_confidence * 100.0f, - ced_reliable ? "reliable" : (ced_not_reliable ? "NOT reliable" : "???")); + StringCchCopyA(chEncodingInfo, ARRAYSIZE(chEncodingInfo), "UCD='"); + if (encUCD >= 0) + { + StringCchCatA(chEncodingInfo, ARRAYSIZE(chEncodingInfo), encodingUCD); + } + else { + const char* ukn = (!encodingUCD || (encodingUCD[0] == '\0')) ? "" : encodingUCD; + StringCchCatA(chEncodingInfo, ARRAYSIZE(chEncodingInfo), (encUCD == CPI_ASCII_7BIT) ? "ASCII" : ukn); + } + StringCchPrintfA(tmpBuf, 128, "' Conf=%.0f%%", ucd_confidence * 100.0f); StringCchCatA(chEncodingInfo, ARRAYSIZE(chEncodingInfo), tmpBuf); - } - else { - StringCchCatA(chEncodingInfo, ARRAYSIZE(chEncodingInfo), "'"); - } - MultiByteToWideChar(CP_UTF7, 0, chEncodingInfo, -1, wchEncodingInfo, ARRAYSIZE(wchEncodingInfo)); + StringCchCatA(chEncodingInfo, ARRAYSIZE(chEncodingInfo), " || CED='"); + if (encCED >= 0) + { + //WideCharToMultiByte(CP_UTF7, 0, Encoding_GetLabel(encCED), -1, chEncodingLabel, ARRAYSIZE(chEncodingLabel), 0, 0); + StringCchCatA(chEncodingInfo, ARRAYSIZE(chEncodingInfo), encodingCED); + } + else { + StringCchCatA(chEncodingInfo, ARRAYSIZE(chEncodingInfo), (encCED == CPI_ASCII_7BIT) ? "ASCII" : ""); + } + if ((encCED >= 0) || (encCED == CPI_ASCII_7BIT)) { + bool const ced_reliable = (ced_confidence >= Settings2.ReliableCEDConfidenceMapping); + bool const ced_not_reliable = (ced_confidence <= Settings2.UnReliableCEDConfidenceMapping); + StringCchPrintfA(tmpBuf, 128, "' Conf=%.0f%% [%s])", ced_confidence * 100.0f, + ced_reliable ? "reliable" : (ced_not_reliable ? "NOT reliable" : "???")); + StringCchCatA(chEncodingInfo, ARRAYSIZE(chEncodingInfo), tmpBuf); + } + else { + StringCchCatA(chEncodingInfo, ARRAYSIZE(chEncodingInfo), "'"); + } + MultiByteToWideChar(CP_UTF7, 0, chEncodingInfo, -1, wchEncodingInfo, ARRAYSIZE(wchEncodingInfo)); + } } diff --git a/src/MuiLanguage.h b/src/MuiLanguage.h index ba9e48dde..b4d638ee7 100644 --- a/src/MuiLanguage.h +++ b/src/MuiLanguage.h @@ -22,7 +22,7 @@ typedef struct _muilanguage UINT rid; WCHAR szLocaleName[LOCALE_NAME_MAX_LENGTH]; // !!! WARNING: LCID is DEPRECATED - LANGID LangId; // just for historic reasons + LANGID LangId; bool bHasDLL; bool bIsActive; diff --git a/src/Notepad3.c b/src/Notepad3.c index eab5b398d..953b1dc70 100644 --- a/src/Notepad3.c +++ b/src/Notepad3.c @@ -42,7 +42,6 @@ #include "SciXLexer.h" #include "MuiLanguage.h" - #include "Notepad3.h" @@ -478,6 +477,13 @@ static void _InitGlobals() } +typedef struct _lng_menu_t { + LANGID LangID; + const WCHAR* MenuItem; +} LNG_MENU_T; + +#include "../language/language_menus.hpp" + static bool _InsertLanguageMenu(HMENU hMenuBar) { // check, if we need a language switching menu @@ -493,7 +499,15 @@ static bool _InsertLanguageMenu(HMENU hMenuBar) { if (MUI_LanguageDLLs[lng].bHasDLL) { - GetLngString(MUI_LanguageDLLs[lng].rid, wchMenuItemFmt, COUNTOF(wchMenuItemFmt)); + // GetLngString(MUI_LanguageDLLs[lng].rid, wchMenuItemFmt, COUNTOF(wchMenuItemFmt)); + for (int i = 0; i < COUNTOF(s_LanguageMenu); ++i) { + if (MUI_LanguageDLLs[lng].LangId == s_LanguageMenu[i].LangID) + { + StringCchCopy(wchMenuItemFmt, COUNTOF(wchMenuItemFmt), s_LanguageMenu[i].MenuItem); + break; + } + } + StringCchPrintfW(wchMenuItemStrg, COUNTOF(wchMenuItemStrg), wchMenuItemFmt, MUI_LanguageDLLs[lng].szLocaleName); AppendMenu(hmenuLanguage, MF_ENABLED | MF_STRING, MUI_LanguageDLLs[lng].rid, wchMenuItemStrg); } @@ -1747,7 +1761,6 @@ static HBITMAP _LoadBitmapFile(LPCWSTR path) return hbmp; } - //============================================================================= // // SelectExternalToolBar() - Select and Load an external Bitmal as ToolBarImage diff --git a/src/VersionEx.h b/src/VersionEx.h index a07f37b7f..0ebb3f428 100644 --- a/src/VersionEx.h +++ b/src/VersionEx.h @@ -7,8 +7,8 @@ #define SAPPNAME "Notepad3" #define VERSION_MAJOR 5 #define VERSION_MINOR 19 -#define VERSION_REV 307 -#define VERSION_BUILD 1648 +#define VERSION_REV 308 +#define VERSION_BUILD 1650 #define SCINTILLA_VER 414 #define ONIGMO_REGEX_VER 6.2.0 #define VERSION_PATCH XpErImEnTaL