Merge pull request #1002 from RaiKoHoff/Dev_UCHARDET

Make international language menu (language independent)
This commit is contained in:
Rainer Kottenhoff 2019-03-08 14:23:47 +01:00 committed by GitHub
commit 4f9af7f974
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
32 changed files with 329 additions and 465 deletions

View File

@ -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

View File

@ -1 +1 @@
1648
1650

View File

@ -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},

View File

@ -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_

View File

@ -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

View File

@ -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

View File

@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
@ -120,7 +120,7 @@
<Message>MUI Split</Message>
</PostBuildEvent>
<ResourceCompile>
<Culture>0x0423</Culture>
<Culture>0x0407</Culture>
<AdditionalIncludeDirectories>$(ProjectDir)..\..\res;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ResourceCompile>
</ItemDefinitionGroup>
@ -146,7 +146,7 @@
<Message>MUI Split</Message>
</PostBuildEvent>
<ResourceCompile>
<Culture>0x0423</Culture>
<Culture>0x0407</Culture>
<AdditionalIncludeDirectories>$(ProjectDir)..\..\res;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ResourceCompile>
</ItemDefinitionGroup>
@ -178,7 +178,7 @@
<Message>MUI Split</Message>
</PostBuildEvent>
<ResourceCompile>
<Culture>0x0423</Culture>
<Culture>0x0407</Culture>
<AdditionalIncludeDirectories>$(ProjectDir)..\..\res;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ResourceCompile>
</ItemDefinitionGroup>
@ -210,7 +210,7 @@
<Message>MUI Split</Message>
</PostBuildEvent>
<ResourceCompile>
<Culture>0x0423</Culture>
<Culture>0x0407</Culture>
<AdditionalIncludeDirectories>$(ProjectDir)..\..\res;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ResourceCompile>
</ItemDefinitionGroup>

View File

@ -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 (Südafrika)\t\t\t[%s]"
IDS_MUI_LANG_BE_BY "Weißrussisch (Weißrussland)\t\t\t[%s]"
IDS_MUI_LANG_DE_DE "Deutsch (Deutschland)\t\t\t[%s]"
IDS_MUI_LANG_EN_GB "Englisch (Vereinigtes Königreich)\t\t\t[%s]"
IDS_MUI_LANG_ES_ES "Spanisch (Spanien)\t\t\t[%s]"
IDS_MUI_LANG_FR_FR "Französisch (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 "Niederländisch (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

View File

@ -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

View File

@ -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

View File

@ -201,21 +201,6 @@ END
STRINGTABLE
BEGIN
IDS_MUI_MENU_LANGUAGE "Idioma"
IDS_MUI_LANG_EN_US "Inglés (Estados Unidos)\t\t\t[%s]"
IDS_MUI_LANG_AF_ZA "Afrikáans (Sudáfrica)\t\t\t[%s]"
IDS_MUI_LANG_BE_BY "Bielorruso (Belarús)\t\t\t[%s]"
IDS_MUI_LANG_DE_DE "Alemán (Alemania)\t\t\t[%s]"
IDS_MUI_LANG_EN_GB "Inglés (Reino Unido)\t\t\t[%s]"
IDS_MUI_LANG_ES_ES "Español (España)\t\t\t[%s]"
IDS_MUI_LANG_FR_FR "Francés (Francia)\t\t\t[%s]"
IDS_MUI_LANG_HU_HU "Húngaro (Hungría)\t\t\t[%s]"
IDS_MUI_LANG_IT_IT "Italiano (Italia)\t\t\t[%s]"
IDS_MUI_LANG_JP_JP "Japonés (Japón)\t\t\t[%s]"
IDS_MUI_LANG_KO_KR "Coreano (Corea)\t\t\t[%s]"
IDS_MUI_LANG_NL_NL "Holandés (Países Bajos)\t\t\t[%s]"
IDS_MUI_LANG_PT_BR "Portugués (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

View File

@ -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 "Biélorusse (Biélorussie)\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 "Français (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 "Coréen (Corée)\t\t\t[%s]"
IDS_MUI_LANG_NL_NL "Néerlandais (Pays-Bas)\t\t\t[%s]"
IDS_MUI_LANG_PT_BR "Portugais (Brésil)\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

View File

@ -229,21 +229,6 @@ END
STRINGTABLE
BEGIN
IDS_MUI_MENU_LANGUAGE "Nyelv"
IDS_MUI_LANG_EN_US "Angol (Egyesült Államok)\t\t\t[%s]"
IDS_MUI_LANG_AF_ZA "Afrikaans (Dél-Afrika)\t\t\t[%s]"
IDS_MUI_LANG_BE_BY "Fehéroroszország (Fehéroroszország)\t\t\t[%s]"
IDS_MUI_LANG_DE_DE "Német (Németország)\t\t\t[%s]"
IDS_MUI_LANG_EN_GB "Angol Egyesült Királyság)\t\t\t[%s]"
IDS_MUI_LANG_ES_ES "Spanyol (Spanyolország)\t\t\t[%s]"
IDS_MUI_LANG_FR_FR "Francia (Franciaország)\t\t\t[%s]"
IDS_MUI_LANG_HU_HU "Magyar (Magyarország)\t\t\t[%s]"
IDS_MUI_LANG_IT_IT "Olasz (Olaszország)\t\t\t[%s]"
IDS_MUI_LANG_JP_JP "Japán (Japán)\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 "Portugál (Brazília)\t\t\t[%s]"
IDS_MUI_LANG_RU_RU "Orosz (Oroszország)\t\t\t[%s]"
IDS_MUI_LANG_ZH_CN "Kínai (Hans)\t\t\t[%s]"
END
STRINGTABLE

View File

@ -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

View File

@ -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 "中国語(ハンス)\t\t\t[%s]"
END
STRINGTABLE

View File

@ -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

View File

@ -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

View File

@ -229,21 +229,6 @@ END
STRINGTABLE
BEGIN
IDS_MUI_MENU_LANGUAGE "Língua"
IDS_MUI_LANG_EN_US "Inglês (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 (Bielorrússia)\t\t\t[%s]"
IDS_MUI_LANG_DE_DE "Alemanha (Alemã)\t\t\t[%s]"
IDS_MUI_LANG_EN_GB "Inglês (Reino Unido)\t\t\t[%s]"
IDS_MUI_LANG_ES_ES "Espanhol (Espanha)\t\t\t[%s]"
IDS_MUI_LANG_FR_FR "Francês França)\t\t\t[%s]"
IDS_MUI_LANG_HU_HU "Húngaro (Hungria)\t\t\t[%s]"
IDS_MUI_LANG_IT_IT "Italiano (Itália)\t\t\t[%s]"
IDS_MUI_LANG_JP_JP "Japonês (Japão)\t\t\t[%s]"
IDS_MUI_LANG_KO_KR "Coreano (Coréia)\t\t\t[%s]"
IDS_MUI_LANG_NL_NL "Holandês (Holanda)\t\t\t[%s]"
IDS_MUI_LANG_PT_BR "Português (Brasil)\t\t\t[%s]"
IDS_MUI_LANG_RU_RU "Russo (Rússia)\t\t\t[%s]"
IDS_MUI_LANG_ZH_CN "Chinês (Hans)\t\t\t[%s]"
END
STRINGTABLE

View File

@ -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

View File

@ -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

View File

@ -3,7 +3,7 @@
<assemblyIdentity
name="Notepad3"
processorArchitecture="*"
version="5.19.307.1648"
version="5.19.308.1650"
type="win32"
/>
<description>Notepad3 XpErImEnTaL</description>

View File

@ -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
<ul>
<li><a href="https://www.scintilla.org/scintilla414.zip">zip format</a> (1600K) commonly used on Windows</li>
<li><a href="https://www.scintilla.org/scintilla414.tgz">tgz format</a> (1400K) commonly used on Linux and compatible operating systems</li>
<li><a href="https://www.scintilla.org/scintilla414.zip">zip format</a> (1700K) commonly used on Windows</li>
<li><a href="https://www.scintilla.org/scintilla414.tgz">tgz format</a> (1500K) commonly used on Linux and compatible operating systems</li>
</ul>
Instructions for building on both Windows and Linux are included in the readme file.
<h4>

View File

@ -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

View File

@ -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,)

View File

@ -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_) :

View File

@ -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))) {

View File

@ -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;
}
// ============================================================================

View File

@ -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_

View File

@ -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<cpi_enc_t>(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<size_t>(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<int> 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<int> 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')) ? "<unknown>" : 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" : "<unknown>");
}
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')) ? "<unknown>" : 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" : "<unknown>");
}
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));
}
}

View File

@ -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;

View File

@ -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

View File

@ -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