+ refactoring: prpare encoding detector enhancement

This commit is contained in:
Rainer Kottenhoff 2018-02-28 22:47:14 +01:00
parent ad644e1723
commit 528d0fa3bf
6 changed files with 281 additions and 279 deletions

View File

@ -75,14 +75,14 @@ static int yFindReplaceDlgSave;
extern int xFindReplaceDlg;
extern int yFindReplaceDlg;
extern int iDefaultEOLMode;
extern int g_iDefaultEOLMode;
extern int iLineEndings[3];
extern BOOL bFixLineEndings;
extern BOOL bAutoStripBlanks;
// Default Codepage and Character Set
extern int iDefaultEncoding;
extern int iDefaultCharSet;
extern int g_iDefaultEncoding;
extern int g_iDefaultCharSet;
extern BOOL bLoadASCIIasUTF8;
extern BOOL bLoadNFOasOEM;
@ -193,8 +193,8 @@ HWND EditCreate(HWND hwndParent)
g_hInstance,
NULL);
Encoding_Current(iDefaultEncoding);
Encoding_SciSetCodePage(hwnd,iDefaultEncoding);
Encoding_Current(g_iDefaultEncoding);
Encoding_SciSetCodePage(hwnd,g_iDefaultEncoding);
SendMessage(hwnd,SCI_SETEOLMODE,SC_EOL_CRLF,0);
SendMessage(hwnd,SCI_SETPASTECONVERTENDINGS,TRUE,0);
SendMessage(hwnd,SCI_SETMODEVENTMASK,/*SC_MODEVENTMASKALL*/SC_MOD_INSERTTEXT|SC_MOD_DELETETEXT|SC_MOD_CONTAINER,0);
@ -939,7 +939,7 @@ BOOL EditCopyAppend(HWND hwnd, BOOL bAppend)
//
int EditDetectEOLMode(HWND hwnd,char* lpData,DWORD cbData)
{
int iEOLMode = iLineEndings[iDefaultEOLMode];
int iEOLMode = iLineEndings[g_iDefaultEOLMode];
char *cp = (char*)lpData;
if (!cp)
@ -993,7 +993,7 @@ BOOL EditLoadFile(
dwLastIOError = GetLastError();
if (hFile == INVALID_HANDLE_VALUE) {
Encoding_Source(CPI_NONE);
Encoding_SrcCmdLn(CPI_NONE);
Encoding_SrcWeak(CPI_NONE);
return FALSE;
}
@ -1009,7 +1009,7 @@ BOOL EditLoadFile(
CloseHandle(hFile);
if (pbUnkownExt)
*pbUnkownExt = TRUE;
Encoding_Source(CPI_NONE);
Encoding_SrcCmdLn(CPI_NONE);
Encoding_SrcWeak(CPI_NONE);
return FALSE;
}
@ -1022,7 +1022,7 @@ BOOL EditLoadFile(
CloseHandle(hFile);
if (pbFileTooBig)
*pbFileTooBig = TRUE;
Encoding_Source(CPI_NONE);
Encoding_SrcCmdLn(CPI_NONE);
Encoding_SrcWeak(CPI_NONE);
return FALSE;
}
@ -1036,7 +1036,7 @@ BOOL EditLoadFile(
CloseHandle(hFile);
if (pbFileTooBig)
*pbFileTooBig = FALSE;
Encoding_Source(CPI_NONE);
Encoding_SrcCmdLn(CPI_NONE);
Encoding_SrcWeak(CPI_NONE);
return FALSE;
}
@ -1048,7 +1048,7 @@ BOOL EditLoadFile(
if (!bReadSuccess) {
GlobalFree(lpData);
Encoding_Source(CPI_NONE);
Encoding_SrcCmdLn(CPI_NONE);
Encoding_SrcWeak(CPI_NONE);
return FALSE;
}
@ -1060,50 +1060,47 @@ BOOL EditLoadFile(
bPreferOEM = TRUE;
}
int _iPrefEncoding = (bPreferOEM) ? g_DOSEncoding : iDefaultEncoding;
const int iFileEncoding = Encoding_SrcCmdLn(CPI_GET);
const int iPreferedEncoding = (bPreferOEM) ? g_DOSEncoding :
(Encoding_IsValid(Encoding_SrcWeak(CPI_GET)) ? Encoding_SrcWeak(CPI_GET) : g_iDefaultEncoding);
if (Encoding_IsValid(Encoding_SrcWeak(CPI_GET))) {
_iPrefEncoding = Encoding_SrcWeak(CPI_GET);
}
BOOL bBOM = FALSE;
BOOL bReverse = FALSE;
const int iSrcEnc = Encoding_Source(CPI_GET);
if (cbData == 0) {
FileVars_Init(NULL,0,&fvCurFile);
*iEOLMode = iLineEndings[iDefaultEOLMode];
if (iSrcEnc == CPI_NONE) {
*iEOLMode = iLineEndings[g_iDefaultEOLMode];
if (iFileEncoding == CPI_NONE) {
if (bLoadASCIIasUTF8 && !bPreferOEM)
*iEncoding = CPI_UTF8;
else
*iEncoding = _iPrefEncoding;
*iEncoding = iPreferedEncoding;
}
else
*iEncoding = iSrcEnc;
*iEncoding = iFileEncoding;
Encoding_SciSetCodePage(hwnd,*iEncoding);
EditSetNewText(hwnd,"",0);
SendMessage(hwnd,SCI_SETEOLMODE,iLineEndings[iDefaultEOLMode],0);
SendMessage(hwnd,SCI_SETEOLMODE,iLineEndings[g_iDefaultEOLMode],0);
GlobalFree(lpData);
}
else if (!bSkipEncodingDetection &&
(iSrcEnc == CPI_NONE || iSrcEnc == CPI_UNICODE || iSrcEnc == CPI_UNICODEBE) &&
(iSrcEnc == CPI_UNICODE || iSrcEnc == CPI_UNICODEBE || IsUnicode(lpData,cbData,&bBOM,&bReverse)) &&
(iSrcEnc == CPI_UNICODE || iSrcEnc == CPI_UNICODEBE || !IsUTF8Signature(lpData))) // check for UTF-8 signature
(iFileEncoding == CPI_NONE || iFileEncoding == CPI_UNICODE || iFileEncoding == CPI_UNICODEBE) &&
(iFileEncoding == CPI_UNICODE || iFileEncoding == CPI_UNICODEBE || IsUnicode(lpData,cbData,&bBOM,&bReverse)) &&
(iFileEncoding == CPI_UNICODE || iFileEncoding == CPI_UNICODEBE || !IsUTF8Signature(lpData))) // check for UTF-8 signature
{
char* lpDataUTF8;
if (iSrcEnc == CPI_UNICODE) {
if (iFileEncoding == CPI_UNICODE) {
bBOM = (*((UNALIGNED PWCHAR)lpData) == 0xFEFF);
bReverse = FALSE;
}
else if (iSrcEnc == CPI_UNICODEBE)
else if (iFileEncoding == CPI_UNICODEBE)
bBOM = (*((UNALIGNED PWCHAR)lpData) == 0xFFFE);
if (iSrcEnc == CPI_UNICODEBE || bReverse) {
if (iFileEncoding == CPI_UNICODEBE || bReverse) {
_swab(lpData,lpData,cbData);
if (bBOM)
*iEncoding = CPI_UNICODEBEBOM;
@ -1142,7 +1139,7 @@ BOOL EditLoadFile(
else {
GlobalFree(lpDataUTF8);
GlobalFree(lpData);
Encoding_Source(CPI_NONE);
Encoding_SrcCmdLn(CPI_NONE);
Encoding_SrcWeak(CPI_NONE);
return FALSE;
}
@ -1150,18 +1147,18 @@ BOOL EditLoadFile(
else {
FileVars_Init(lpData,cbData,&fvCurFile);
if (!bSkipEncodingDetection && (iSrcEnc == CPI_NONE || iSrcEnc == CPI_UTF8 || iSrcEnc == CPI_UTF8SIGN) &&
if (!bSkipEncodingDetection && (iFileEncoding == CPI_NONE || iFileEncoding == CPI_UTF8 || iFileEncoding == CPI_UTF8SIGN) &&
((IsUTF8Signature(lpData) ||
FileVars_IsUTF8(&fvCurFile) ||
(iSrcEnc == CPI_UTF8 || iSrcEnc == CPI_UTF8SIGN) ||
(iFileEncoding == CPI_UTF8 || iFileEncoding == CPI_UTF8SIGN) ||
(!bPreferOEM && bLoadASCIIasUTF8) || // from menu "Reload As UTF-8"
(IsUTF8(lpData,cbData) &&
(((UTF8_mbslen_bytes(UTF8StringStart(lpData)) - 1 !=
UTF8_mbslen(UTF8StringStart(lpData),IsUTF8Signature(lpData) ? cbData-3 : cbData)) ||
(!bPreferOEM && (
g_Encodings[_iPrefEncoding].uFlags & NCP_UTF8 ||
g_Encodings[iPreferedEncoding].uFlags & NCP_UTF8 ||
bLoadASCIIasUTF8))))))) && !(FileVars_IsNonUTF8(&fvCurFile) &&
(iSrcEnc != CPI_UTF8 && iSrcEnc != CPI_UTF8SIGN)))
(iFileEncoding != CPI_UTF8 && iFileEncoding != CPI_UTF8SIGN)))
{
Encoding_SciSetCodePage(hwnd,CPI_UTF8);
EditSetNewText(hwnd,"",0);
@ -1179,25 +1176,29 @@ BOOL EditLoadFile(
}
else {
if (iSrcEnc != CPI_NONE)
*iEncoding = iSrcEnc;
if (iFileEncoding != CPI_NONE)
*iEncoding = iFileEncoding;
else {
*iEncoding = FileVars_GetEncoding(&fvCurFile);
if (*iEncoding == CPI_NONE) {
if (fvCurFile.mask & FV_ENCODING)
*iEncoding = CPI_ANSI_DEFAULT;
else {
if (Encoding_SrcWeak(CPI_GET) == CPI_NONE)
*iEncoding = _iPrefEncoding;
else if (g_Encodings[Encoding_SrcWeak(CPI_GET)].uFlags & NCP_INTERNAL)
*iEncoding = iDefaultEncoding;
else
*iEncoding = _iPrefEncoding;
int iEncWeak = Encoding_SrcWeak(CPI_GET);
switch (iEncWeak) {
case CPI_NONE:
*iEncoding = iPreferedEncoding;
break;
default:
*iEncoding = (g_Encodings[iEncWeak].uFlags & NCP_INTERNAL) ? g_iDefaultEncoding :
(Encoding_IsValid(iEncWeak) ? iEncWeak : iPreferedEncoding);
break;
}
}
}
}
if (((g_Encodings[*iEncoding].uCodePage != CP_UTF7) && (g_Encodings[*iEncoding].uFlags & NCP_8BIT)) ||
if (((g_Encodings[*iEncoding].uCodePage != CP_UTF7) && (g_Encodings[*iEncoding].uFlags & NCP_EXTERNAL_8BIT)) ||
((g_Encodings[*iEncoding].uCodePage == CP_UTF7) && IsUTF7(lpData,cbData))) {
UINT uCodePage = g_Encodings[*iEncoding].uCodePage;
@ -1221,7 +1222,7 @@ BOOL EditLoadFile(
else {
GlobalFree(lpDataWide);
GlobalFree(lpData);
Encoding_Source(CPI_NONE);
Encoding_SrcCmdLn(CPI_NONE);
Encoding_SrcWeak(CPI_NONE);
return FALSE;
}
@ -1229,13 +1230,13 @@ BOOL EditLoadFile(
else {
GlobalFree(lpDataWide);
GlobalFree(lpData);
Encoding_Source(CPI_NONE);
Encoding_SrcCmdLn(CPI_NONE);
Encoding_SrcWeak(CPI_NONE);
return FALSE;
}
}
else {
*iEncoding = Encoding_IsValid(iSrcEnc) ? iSrcEnc : iDefaultEncoding;
*iEncoding = Encoding_IsValid(iFileEncoding) ? iFileEncoding : g_iDefaultEncoding;
Encoding_SciSetCodePage(hwnd,*iEncoding);
EditSetNewText(hwnd,"",0);
EditSetNewText(hwnd,lpData,cbData);
@ -1245,7 +1246,7 @@ BOOL EditLoadFile(
}
}
Encoding_Source(CPI_NONE);
Encoding_SrcCmdLn(CPI_NONE);
Encoding_SrcWeak(CPI_NONE);
return TRUE;
@ -1389,7 +1390,7 @@ BOOL EditSaveFile(
GlobalFree(lpData);
}
else if (g_Encodings[iEncoding].uFlags & NCP_8BIT) {
else if (g_Encodings[iEncoding].uFlags & NCP_EXTERNAL_8BIT) {
BOOL bCancelDataLoss = FALSE;
UINT uCodePage = g_Encodings[iEncoding].uCodePage;
@ -1793,7 +1794,7 @@ void EditEscapeCChars(HWND hwnd) {
return;
}
EDITFINDREPLACE efr = { "", "", "", "", 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL };
EDITFINDREPLACE efr = EFR_INIT_DATA;
efr.hwnd = hwnd;
StringCchCopyA(efr.szFind,FNDRPL_BUFFER,"\\");
@ -1825,7 +1826,7 @@ void EditUnescapeCChars(HWND hwnd) {
return;
}
EDITFINDREPLACE efr = { "", "", "", "", 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL };
EDITFINDREPLACE efr = EFR_INIT_DATA;
efr.hwnd = hwnd;
StringCchCopyA(efr.szFind,FNDRPL_BUFFER,"\\\\");
@ -7069,7 +7070,7 @@ void EditSetBookmarkList(HWND hwnd, LPCWSTR pszBookMarks)
//=============================================================================
//
// FileVars_Init()
// SetFileVars()
//
extern BOOL bNoEncodingTags;
extern int flagNoFileVariables;
@ -7134,6 +7135,11 @@ void __fastcall SetFileVars(char* lpData, char* tch, LPFILEVARS lpfv)
}
}
//=============================================================================
//
// FileVars_Init()
//
BOOL FileVars_Init(char *lpData, DWORD cbData, LPFILEVARS lpfv) {
char tch[LARGE_BUFFER];

View File

@ -42,6 +42,8 @@ typedef struct _editfindreplace
} EDITFINDREPLACE, *LPEDITFINDREPLACE, *LPCEDITFINDREPLACE;
#define EFR_INIT_DATA { "", "", "", "", 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL }
#define IDMSG_SWITCHTOFIND 300
#define IDMSG_SWITCHTOREPLACE 301

View File

@ -2768,144 +2768,144 @@ WCHAR wchANSI[16] = { L'\0' };
WCHAR wchOEM[16] = { L'\0' };
NP2ENCODING g_Encodings[] = {
{ NCP_ANSI | NCP_RECODE, CP_ACP, "ansi,system,ascii,", 61000, L"" },
{ NCP_OEM | NCP_RECODE, CP_OEMCP, "oem,oem,", 61001, L"" },
{ NCP_UNICODE | NCP_UNICODE_BOM, CP_UTF8, "", 61002, L"" },
{ NCP_UNICODE | NCP_UNICODE_REVERSE | NCP_UNICODE_BOM, CP_UTF8, "", 61003, L"" },
{ NCP_UNICODE | NCP_RECODE, CP_UTF8, "utf-16,utf16,unicode,", 61004, L"" },
{ NCP_UNICODE | NCP_UNICODE_REVERSE | NCP_RECODE, CP_UTF8, "utf-16be,utf16be,unicodebe,", 61005, L"" },
{ NCP_UTF8 | NCP_RECODE, CP_UTF8, "utf-8,utf8,", 61006, L"" },
{ NCP_UTF8 | NCP_UTF8_SIGN, CP_UTF8, "utf-8,utf8,", 61007, L"" },
{ NCP_8BIT | NCP_RECODE, CP_UTF7, "utf-7,utf7,", 61008, L"" },
{ NCP_8BIT | NCP_RECODE, 720, "DOS-720,dos720,", 61009, L"" },
{ NCP_8BIT | NCP_RECODE, 28596, "iso-8859-6,iso88596,arabic,csisolatinarabic,ecma114,isoir127,", 61010, L"" },
{ NCP_8BIT | NCP_RECODE, 10004, "x-mac-arabic,xmacarabic,", 61011, L"" },
{ NCP_8BIT | NCP_RECODE, 1256, "windows-1256,windows1256,cp1256", 61012, L"" },
{ NCP_8BIT | NCP_RECODE, 775, "ibm775,ibm775,cp500,", 61013, L"" },
{ NCP_8BIT | NCP_RECODE, 28594, "iso-8859-4,iso88594,csisolatin4,isoir110,l4,latin4,", 61014, L"" },
{ NCP_8BIT | NCP_RECODE, 1257, "windows-1257,windows1257,", 61015, L"" },
{ NCP_8BIT | NCP_RECODE, 852, "ibm852,ibm852,cp852,", 61016, L"" },
{ NCP_8BIT | NCP_RECODE, 28592, "iso-8859-2,iso88592,csisolatin2,isoir101,latin2,l2,", 61017, L"" },
{ NCP_8BIT | NCP_RECODE, 10029, "x-mac-ce,xmacce,", 61018, L"" },
{ NCP_8BIT | NCP_RECODE, 1250, "windows-1250,windows1250,xcp1250,", 61019, L"" },
{ NCP_8BIT | NCP_RECODE, 936, "gb2312,gb2312,chinese,cngb,csgb2312,csgb231280,gb231280,gbk,", 61020, L"" },
{ NCP_8BIT | NCP_RECODE, 10008, "x-mac-chinesesimp,xmacchinesesimp,", 61021, L"" },
{ NCP_8BIT | NCP_RECODE, 950, "big5,big5,cnbig5,csbig5,xxbig5,", 61022, L"" },
{ NCP_8BIT | NCP_RECODE, 10002, "x-mac-chinesetrad,xmacchinesetrad,", 61023, L"" },
{ NCP_8BIT | NCP_RECODE, 10082, "x-mac-croatian,xmaccroatian,", 61024, L"" },
{ NCP_8BIT | NCP_RECODE, 866, "cp866,cp866,ibm866,", 61025, L"" },
{ NCP_8BIT | NCP_RECODE, 28595, "iso-8859-5,iso88595,csisolatin5,csisolatincyrillic,cyrillic,isoir144,", 61026, L"" },
{ NCP_8BIT | NCP_RECODE, 20866, "koi8-r,koi8r,cskoi8r,koi,koi8,", 61027, L"" },
{ NCP_8BIT | NCP_RECODE, 21866, "koi8-u,koi8u,koi8ru,", 61028, L"" },
{ NCP_8BIT | NCP_RECODE, 10007, "x-mac-cyrillic,xmaccyrillic,", 61029, L"" },
{ NCP_8BIT | NCP_RECODE, 1251, "windows-1251,windows1251,xcp1251,", 61030, L"" },
{ NCP_8BIT | NCP_RECODE, 28603, "iso-8859-13,iso885913,", 61031, L"" },
{ NCP_8BIT | NCP_RECODE, 863, "ibm863,ibm863,", 61032, L"" },
{ NCP_8BIT | NCP_RECODE, 737, "ibm737,ibm737,", 61033, L"" },
{ NCP_8BIT | NCP_RECODE, 28597, "iso-8859-7,iso88597,csisolatingreek,ecma118,elot928,greek,greek8,isoir126,", 61034, L"" },
{ NCP_8BIT | NCP_RECODE, 10006, "x-mac-greek,xmacgreek,", 61035, L"" },
{ NCP_8BIT | NCP_RECODE, 1253, "windows-1253,windows1253,", 61036, L"" },
{ NCP_8BIT | NCP_RECODE, 869, "ibm869,ibm869,", 61037, L"" },
{ NCP_8BIT | NCP_RECODE, 862, "DOS-862,dos862,", 61038, L"" },
{ NCP_8BIT | NCP_RECODE, 38598, "iso-8859-8-i,iso88598i,logical,", 61039, L"" },
{ NCP_8BIT | NCP_RECODE, 28598, "iso-8859-8,iso88598,csisolatinhebrew,hebrew,isoir138,visual,", 61040, L"" },
{ NCP_8BIT | NCP_RECODE, 10005, "x-mac-hebrew,xmachebrew,", 61041, L"" },
{ NCP_8BIT | NCP_RECODE, 1255, "windows-1255,windows1255,", 61042, L"" },
{ NCP_8BIT | NCP_RECODE, 861, "ibm861,ibm861,", 61043, L"" },
{ NCP_8BIT | NCP_RECODE, 10079, "x-mac-icelandic,xmacicelandic,", 61044, L"" },
{ NCP_8BIT | NCP_RECODE, 10001, "x-mac-japanese,xmacjapanese,", 61045, L"" },
{ NCP_8BIT | NCP_RECODE, 932, "shift_jis,shiftjis,shiftjs,csshiftjis,cswindows31j,mskanji,xmscp932,xsjis,", 61046, L"" },
{ NCP_8BIT | NCP_RECODE, 10003, "x-mac-korean,xmackorean,", 61047, L"" },
{ NCP_8BIT | NCP_RECODE, 949, "windows-949,windows949,ksc56011987,csksc5601,euckr,isoir149,korean,ksc56011989", 61048, L"" },
{ NCP_8BIT | NCP_RECODE, 28593, "iso-8859-3,iso88593,latin3,isoir109,l3,", 61049, L"" },
{ NCP_8BIT | NCP_RECODE, 28605, "iso-8859-15,iso885915,latin9,l9,", 61050, L"" },
{ NCP_8BIT | NCP_RECODE, 865, "ibm865,ibm865,", 61051, L"" },
{ NCP_8BIT | NCP_RECODE, 437, "ibm437,ibm437,437,cp437,cspc8,codepage437,", 61052, L"" },
{ NCP_8BIT | NCP_RECODE, 858, "ibm858,ibm858,ibm00858,", 61053, L"" },
{ NCP_8BIT | NCP_RECODE, 860, "ibm860,ibm860,", 61054, L"" },
{ NCP_8BIT | NCP_RECODE, 10010, "x-mac-romanian,xmacromanian,", 61055, L"" },
{ NCP_8BIT | NCP_RECODE, 10021, "x-mac-thai,xmacthai,", 61056, L"" },
{ NCP_8BIT | NCP_RECODE, 874, "windows-874,windows874,dos874,iso885911,tis620,", 61057, L"" },
{ NCP_8BIT | NCP_RECODE, 857, "ibm857,ibm857,", 61058, L"" },
{ NCP_8BIT | NCP_RECODE, 28599, "iso-8859-9,iso88599,latin5,isoir148,l5,", 61059, L"" },
{ NCP_8BIT | NCP_RECODE, 10081, "x-mac-turkish,xmacturkish,", 61060, L"" },
{ NCP_8BIT | NCP_RECODE, 1254, "windows-1254,windows1254,", 61061, L"" },
{ NCP_8BIT | NCP_RECODE, 10017, "x-mac-ukrainian,xmacukrainian,", 61062, L"" },
{ NCP_8BIT | NCP_RECODE, 1258, "windows-1258,windows-258,", 61063, L"" },
{ NCP_8BIT | NCP_RECODE, 850, "ibm850,ibm850,", 61064, L"" },
{ NCP_8BIT | NCP_RECODE, 28591, "iso-8859-1,iso88591,cp819,latin1,ibm819,isoir100,latin1,l1,", 61065, L"" },
{ NCP_8BIT | NCP_RECODE, 10000, "macintosh,macintosh,", 61066, L"" },
{ NCP_8BIT | NCP_RECODE, 1252, "windows-1252,windows1252,cp367,cp819,ibm367,us,xansi,", 61067, L"" },
{ NCP_8BIT | NCP_RECODE, 37, "ebcdic-cp-us,ebcdiccpus,ebcdiccpca,ebcdiccpwt,ebcdiccpnl,ibm037,cp037,", 61068, L"" },
{ NCP_8BIT | NCP_RECODE, 500, "x-ebcdic-international,xebcdicinternational,", 61069, L"" },
{ NCP_8BIT | NCP_RECODE, 875, "x-EBCDIC-GreekModern,xebcdicgreekmodern,", 61070, L"" },
{ NCP_8BIT | NCP_RECODE, 1026, "CP1026,cp1026,csibm1026,ibm1026,", 61071, L"" },
//{ NCP_8BIT|NCP_RECODE, 870, "CP870,cp870,ebcdiccproece,ebcdiccpyu,csibm870,ibm870,", 00000, L"" }, // IBM EBCDIC (Multilingual Latin-2)
//{ NCP_8BIT|NCP_RECODE, 1047, "IBM01047,ibm01047,", 00000, L"" }, // IBM EBCDIC (Open System Latin-1)
//{ NCP_8BIT|NCP_RECODE, 1140, "x-ebcdic-cp-us-euro,xebcdiccpuseuro,", 00000, L"" }, // IBM EBCDIC (US-Canada-Euro)
//{ NCP_8BIT|NCP_RECODE, 1141, "x-ebcdic-germany-euro,xebcdicgermanyeuro,", 00000, L"" }, // IBM EBCDIC (Germany-Euro)
//{ NCP_8BIT|NCP_RECODE, 1142, "x-ebcdic-denmarknorway-euro,xebcdicdenmarknorwayeuro,", 00000, L"" }, // IBM EBCDIC (Denmark-Norway-Euro)
//{ NCP_8BIT|NCP_RECODE, 1143, "x-ebcdic-finlandsweden-euro,xebcdicfinlandswedeneuro,", 00000, L"" }, // IBM EBCDIC (Finland-Sweden-Euro)
//{ NCP_8BIT|NCP_RECODE, 1144, "x-ebcdic-italy-euro,xebcdicitalyeuro,", 00000, L"" }, // IBM EBCDIC (Italy-Euro)
//{ NCP_8BIT|NCP_RECODE, 1145, "x-ebcdic-spain-euro,xebcdicspaineuro,", 00000, L"" }, // IBM EBCDIC (Spain-Latin America-Euro)
//{ NCP_8BIT|NCP_RECODE, 1146, "x-ebcdic-uk-euro,xebcdicukeuro,", 00000, L"" }, // IBM EBCDIC (UK-Euro)
//{ NCP_8BIT|NCP_RECODE, 1147, "x-ebcdic-france-euro,xebcdicfranceeuro,", 00000, L"" }, // IBM EBCDIC (France-Euro)
//{ NCP_8BIT|NCP_RECODE, 1148, "x-ebcdic-international-euro,xebcdicinternationaleuro,", 00000, L"" }, // IBM EBCDIC (International-Euro)
//{ NCP_8BIT|NCP_RECODE, 1149, "x-ebcdic-icelandic-euro,xebcdicicelandiceuro,", 00000, L"" }, // IBM EBCDIC (Icelandic-Euro)
//{ NCP_8BIT|NCP_RECODE, 1361, "johab,johab,", 00000, L"" }, // Korean (Johab)
//{ NCP_8BIT|NCP_RECODE, 20273, "x-EBCDIC-Germany,xebcdicgermany,", 00000, L"" }, // IBM EBCDIC (Germany)
//{ NCP_8BIT|NCP_RECODE, 20277, "x-EBCDIC-DenmarkNorway,xebcdicdenmarknorway,ebcdiccpdk,ebcdiccpno,", 00000, L"" }, // IBM EBCDIC (Denmark-Norway)
//{ NCP_8BIT|NCP_RECODE, 20278, "x-EBCDIC-FinlandSweden,xebcdicfinlandsweden,ebcdicpfi,ebcdiccpse,", 00000, L"" }, // IBM EBCDIC (Finland-Sweden)
//{ NCP_8BIT|NCP_RECODE, 20280, "x-EBCDIC-Italy,xebcdicitaly,", 00000, L"" }, // IBM EBCDIC (Italy)
//{ NCP_8BIT|NCP_RECODE, 20284, "x-EBCDIC-Spain,xebcdicspain,ebcdiccpes,", 00000, L"" }, // IBM EBCDIC (Spain-Latin America)
//{ NCP_8BIT|NCP_RECODE, 20285, "x-EBCDIC-UK,xebcdicuk,ebcdiccpgb,", 00000, L"" }, // IBM EBCDIC (UK)
//{ NCP_8BIT|NCP_RECODE, 20290, "x-EBCDIC-JapaneseKatakana,xebcdicjapanesekatakana,", 00000, L"" }, // IBM EBCDIC (Japanese Katakana)
//{ NCP_8BIT|NCP_RECODE, 20297, "x-EBCDIC-France,xebcdicfrance,ebcdiccpfr,", 00000, L"" }, // IBM EBCDIC (France)
//{ NCP_8BIT|NCP_RECODE, 20420, "x-EBCDIC-Arabic,xebcdicarabic,ebcdiccpar1,", 00000, L"" }, // IBM EBCDIC (Arabic)
//{ NCP_8BIT|NCP_RECODE, 20423, "x-EBCDIC-Greek,xebcdicgreek,ebcdiccpgr,", 00000, L"" }, // IBM EBCDIC (Greek)
//{ NCP_8BIT|NCP_RECODE, 20424, "x-EBCDIC-Hebrew,xebcdichebrew,ebcdiccphe,", 00000, L"" }, // IBM EBCDIC (Hebrew)
//{ NCP_8BIT|NCP_RECODE, 20833, "x-EBCDIC-KoreanExtended,xebcdickoreanextended,", 00000, L"" }, // IBM EBCDIC (Korean Extended)
//{ NCP_8BIT|NCP_RECODE, 20838, "x-EBCDIC-Thai,xebcdicthai,ibmthai,csibmthai,", 00000, L"" }, // IBM EBCDIC (Thai)
//{ NCP_8BIT|NCP_RECODE, 20871, "x-EBCDIC-Icelandic,xebcdicicelandic,ebcdiccpis,", 00000, L"" }, // IBM EBCDIC (Icelandic)
//{ NCP_8BIT|NCP_RECODE, 20880, "x-EBCDIC-CyrillicRussian,xebcdiccyrillicrussian,ebcdiccyrillic,", 00000, L"" }, // IBM EBCDIC (Cyrillic Russian)
//{ NCP_8BIT|NCP_RECODE, 20905, "x-EBCDIC-Turkish,xebcdicturkish,ebcdiccptr,", 00000, L"" }, // IBM EBCDIC (Turkish)
//{ NCP_8BIT|NCP_RECODE, 20924, "IBM00924,ibm00924,ebcdiclatin9euro,", 00000, L"" }, // IBM EBCDIC (Open System-Euro Latin-1)
//{ NCP_8BIT|NCP_RECODE, 21025, "x-EBCDIC-CyrillicSerbianBulgarian,xebcdiccyrillicserbianbulgarian,", 00000, L"" }, // IBM EBCDIC (Cyrillic Serbian-Bulgarian)
//{ NCP_8BIT|NCP_RECODE, 50930, "x-EBCDIC-JapaneseAndKana,xebcdicjapaneseandkana,", 00000, L"" }, // IBM EBCDIC (Japanese and Japanese Katakana)
//{ NCP_8BIT|NCP_RECODE, 50931, "x-EBCDIC-JapaneseAndUSCanada,xebcdicjapaneseanduscanada,", 00000, L"" }, // IBM EBCDIC (Japanese and US-Canada)
//{ NCP_8BIT|NCP_RECODE, 50933, "x-EBCDIC-KoreanAndKoreanExtended,xebcdickoreanandkoreanextended,", 00000, L"" }, // IBM EBCDIC (Korean and Korean Extended)
//{ NCP_8BIT|NCP_RECODE, 50935, "x-EBCDIC-SimplifiedChinese,xebcdicsimplifiedchinese,", 00000, L"" }, // IBM EBCDIC (Chinese Simplified)
//{ NCP_8BIT|NCP_RECODE, 50937, "x-EBCDIC-TraditionalChinese,xebcdictraditionalchinese,", 00000, L"" }, // IBM EBCDIC (Chinese Traditional)
//{ NCP_8BIT|NCP_RECODE, 50939, "x-EBCDIC-JapaneseAndJapaneseLatin,xebcdicjapaneseandjapaneselatin,", 00000, L"" }, // IBM EBCDIC (Japanese and Japanese-Latin)
//{ NCP_8BIT|NCP_RECODE, 20105, "x-IA5,xia5,", 00000, L"" }, // Western European (IA5)
//{ NCP_8BIT|NCP_RECODE, 20106, "x-IA5-German,xia5german,", 00000, L"" }, // German (IA5)
//{ NCP_8BIT|NCP_RECODE, 20107, "x-IA5-Swedish,xia5swedish,", 00000, L"" }, // Swedish (IA5)
//{ NCP_8BIT|NCP_RECODE, 20108, "x-IA5-Norwegian,xia5norwegian,", 00000, L"" }, // Norwegian (IA5)
//{ NCP_8BIT|NCP_RECODE, 20936, "x-cp20936,xcp20936,", 00000, L"" }, // Chinese Simplified (GB2312)
//{ NCP_8BIT|NCP_RECODE, 20932, "euc-jp,,", 00000, L"" }, // Japanese (JIS X 0208-1990 & 0212-1990)
//{ NCP_8BIT|NCP_RECODE, 50220, "iso-2022-jp,iso2022jp,", 00000, L"" }, // Japanese (JIS)
//{ NCP_8BIT|NCP_RECODE, 50221, "csISO2022JP,csiso2022jp,", 00000, L"" }, // Japanese (JIS-Allow 1 byte Kana)
//{ NCP_8BIT|NCP_RECODE, 50222, "_iso-2022-jp$SIO,iso2022jpSIO,", 00000, L"" }, // Japanese (JIS-Allow 1 byte Kana - SO/SI)
//{ NCP_8BIT|NCP_RECODE, 50225, "iso-2022-kr,iso2022kr,csiso2022kr,", 00000, L"" }, // Korean (ISO-2022-KR)
//{ NCP_8BIT|NCP_RECODE, 50227, "x-cp50227,xcp50227,", 00000, L"" }, // Chinese Simplified (ISO-2022)
//{ NCP_8BIT|NCP_RECODE, 50229, "iso-2022-cn,iso2022cn,", 00000, L"" }, // Chinese Traditional (ISO-2022)
//{ NCP_8BIT|NCP_RECODE, 20000, "x-Chinese-CNS,xchinesecns,", 00000, L"" }, // Chinese Traditional (CNS)
//{ NCP_8BIT|NCP_RECODE, 20002, "x-Chinese-Eten,xchineseeten,", 00000, L"" }, // Chinese Traditional (Eten)
//{ NCP_8BIT|NCP_RECODE, 51932, "euc-jp,eucjp,xeuc,xeucjp,", 00000, L"" }, // Japanese (EUC)
//{ NCP_8BIT|NCP_RECODE, 51936, "euc-cn,euccn,xeuccn,", 00000, L"" }, // Chinese Simplified (EUC)
//{ NCP_8BIT|NCP_RECODE, 51949, "euc-kr,euckr,cseuckr,", 00000, L"" }, // Korean (EUC)
//{ NCP_8BIT|NCP_RECODE, 52936, "hz-gb-2312,hzgb2312,hz,", 00000, L"" }, // Chinese Simplified (HZ-GB2312)
{ NCP_8BIT | NCP_RECODE, 54936, "gb18030,gb18030,", 61072, L"" } // Chinese Simplified (GB18030)
//{ NCP_8BIT|NCP_RECODE, 57002, "x-iscii-de,xisciide,", 00000, L"" }, // ISCII Devanagari
//{ NCP_8BIT|NCP_RECODE, 57003, "x-iscii-be,xisciibe,", 00000, L"" }, // ISCII Bengali
//{ NCP_8BIT|NCP_RECODE, 57004, "x-iscii-ta,xisciita,", 00000, L"" }, // ISCII Tamil
//{ NCP_8BIT|NCP_RECODE, 57005, "x-iscii-te,xisciite,", 00000, L"" }, // ISCII Telugu
//{ NCP_8BIT|NCP_RECODE, 57006, "x-iscii-as,xisciias,", 00000, L"" }, // ISCII Assamese
//{ NCP_8BIT|NCP_RECODE, 57007, "x-iscii-or,xisciior,", 00000, L"" }, // ISCII Oriya
//{ NCP_8BIT|NCP_RECODE, 57008, "x-iscii-ka,xisciika,", 00000, L"" }, // ISCII Kannada
//{ NCP_8BIT|NCP_RECODE, 57009, "x-iscii-ma,xisciima,", 00000, L"" }, // ISCII Malayalam
//{ NCP_8BIT|NCP_RECODE, 57010, "x-iscii-gu,xisciigu,", 00000, L"" }, // ISCII Gujarathi
//{ NCP_8BIT|NCP_RECODE, 57011, "x-iscii-pa,xisciipa,", 00000, L"" }, // ISCII Panjabi
{ NCP_ANSI | NCP_RECODE, CP_ACP, "ansi,system,ascii,", 61000, L"" },
{ NCP_OEM | NCP_RECODE, CP_OEMCP, "oem,oem,", 61001, L"" },
{ NCP_UNICODE | NCP_UNICODE_BOM, CP_UTF8, "", 61002, L"" },
{ NCP_UNICODE | NCP_UNICODE_REVERSE | NCP_UNICODE_BOM, CP_UTF8, "", 61003, L"" },
{ NCP_UNICODE | NCP_RECODE, CP_UTF8, "utf-16,utf16,unicode,", 61004, L"" },
{ NCP_UNICODE | NCP_UNICODE_REVERSE | NCP_RECODE, CP_UTF8, "utf-16be,utf16be,unicodebe,", 61005, L"" },
{ NCP_UTF8 | NCP_RECODE, CP_UTF8, "utf-8,utf8,", 61006, L"" },
{ NCP_UTF8 | NCP_UTF8_SIGN, CP_UTF8, "utf-8,utf8,", 61007, L"" },
{ NCP_EXTERNAL_8BIT | NCP_RECODE, CP_UTF7, "utf-7,utf7,", 61008, L"" },
{ NCP_EXTERNAL_8BIT | NCP_RECODE, 720, "DOS-720,dos720,", 61009, L"" },
{ NCP_EXTERNAL_8BIT | NCP_RECODE, 28596, "iso-8859-6,iso88596,arabic,csisolatinarabic,ecma114,isoir127,", 61010, L"" },
{ NCP_EXTERNAL_8BIT | NCP_RECODE, 10004, "x-mac-arabic,xmacarabic,", 61011, L"" },
{ NCP_EXTERNAL_8BIT | NCP_RECODE, 1256, "windows-1256,windows1256,cp1256", 61012, L"" },
{ NCP_EXTERNAL_8BIT | NCP_RECODE, 775, "ibm775,ibm775,cp500,", 61013, L"" },
{ NCP_EXTERNAL_8BIT | NCP_RECODE, 28594, "iso-8859-4,iso88594,csisolatin4,isoir110,l4,latin4,", 61014, L"" },
{ NCP_EXTERNAL_8BIT | NCP_RECODE, 1257, "windows-1257,windows1257,", 61015, L"" },
{ NCP_EXTERNAL_8BIT | NCP_RECODE, 852, "ibm852,ibm852,cp852,", 61016, L"" },
{ NCP_EXTERNAL_8BIT | NCP_RECODE, 28592, "iso-8859-2,iso88592,csisolatin2,isoir101,latin2,l2,", 61017, L"" },
{ NCP_EXTERNAL_8BIT | NCP_RECODE, 10029, "x-mac-ce,xmacce,", 61018, L"" },
{ NCP_EXTERNAL_8BIT | NCP_RECODE, 1250, "windows-1250,windows1250,xcp1250,", 61019, L"" },
{ NCP_EXTERNAL_8BIT | NCP_RECODE, 936, "gb2312,gb2312,chinese,cngb,csgb2312,csgb231280,gb231280,gbk,", 61020, L"" },
{ NCP_EXTERNAL_8BIT | NCP_RECODE, 10008, "x-mac-chinesesimp,xmacchinesesimp,", 61021, L"" },
{ NCP_EXTERNAL_8BIT | NCP_RECODE, 950, "big5,big5,cnbig5,csbig5,xxbig5,", 61022, L"" },
{ NCP_EXTERNAL_8BIT | NCP_RECODE, 10002, "x-mac-chinesetrad,xmacchinesetrad,", 61023, L"" },
{ NCP_EXTERNAL_8BIT | NCP_RECODE, 10082, "x-mac-croatian,xmaccroatian,", 61024, L"" },
{ NCP_EXTERNAL_8BIT | NCP_RECODE, 866, "cp866,cp866,ibm866,", 61025, L"" },
{ NCP_EXTERNAL_8BIT | NCP_RECODE, 28595, "iso-8859-5,iso88595,csisolatin5,csisolatincyrillic,cyrillic,isoir144,", 61026, L"" },
{ NCP_EXTERNAL_8BIT | NCP_RECODE, 20866, "koi8-r,koi8r,cskoi8r,koi,koi8,", 61027, L"" },
{ NCP_EXTERNAL_8BIT | NCP_RECODE, 21866, "koi8-u,koi8u,koi8ru,", 61028, L"" },
{ NCP_EXTERNAL_8BIT | NCP_RECODE, 10007, "x-mac-cyrillic,xmaccyrillic,", 61029, L"" },
{ NCP_EXTERNAL_8BIT | NCP_RECODE, 1251, "windows-1251,windows1251,xcp1251,", 61030, L"" },
{ NCP_EXTERNAL_8BIT | NCP_RECODE, 28603, "iso-8859-13,iso885913,", 61031, L"" },
{ NCP_EXTERNAL_8BIT | NCP_RECODE, 863, "ibm863,ibm863,", 61032, L"" },
{ NCP_EXTERNAL_8BIT | NCP_RECODE, 737, "ibm737,ibm737,", 61033, L"" },
{ NCP_EXTERNAL_8BIT | NCP_RECODE, 28597, "iso-8859-7,iso88597,csisolatingreek,ecma118,elot928,greek,greek8,isoir126,", 61034, L"" },
{ NCP_EXTERNAL_8BIT | NCP_RECODE, 10006, "x-mac-greek,xmacgreek,", 61035, L"" },
{ NCP_EXTERNAL_8BIT | NCP_RECODE, 1253, "windows-1253,windows1253,", 61036, L"" },
{ NCP_EXTERNAL_8BIT | NCP_RECODE, 869, "ibm869,ibm869,", 61037, L"" },
{ NCP_EXTERNAL_8BIT | NCP_RECODE, 862, "DOS-862,dos862,", 61038, L"" },
{ NCP_EXTERNAL_8BIT | NCP_RECODE, 38598, "iso-8859-8-i,iso88598i,logical,", 61039, L"" },
{ NCP_EXTERNAL_8BIT | NCP_RECODE, 28598, "iso-8859-8,iso88598,csisolatinhebrew,hebrew,isoir138,visual,", 61040, L"" },
{ NCP_EXTERNAL_8BIT | NCP_RECODE, 10005, "x-mac-hebrew,xmachebrew,", 61041, L"" },
{ NCP_EXTERNAL_8BIT | NCP_RECODE, 1255, "windows-1255,windows1255,", 61042, L"" },
{ NCP_EXTERNAL_8BIT | NCP_RECODE, 861, "ibm861,ibm861,", 61043, L"" },
{ NCP_EXTERNAL_8BIT | NCP_RECODE, 10079, "x-mac-icelandic,xmacicelandic,", 61044, L"" },
{ NCP_EXTERNAL_8BIT | NCP_RECODE, 10001, "x-mac-japanese,xmacjapanese,", 61045, L"" },
{ NCP_EXTERNAL_8BIT | NCP_RECODE, 932, "shift_jis,shiftjis,shiftjs,csshiftjis,cswindows31j,mskanji,xmscp932,xsjis,", 61046, L"" },
{ NCP_EXTERNAL_8BIT | NCP_RECODE, 10003, "x-mac-korean,xmackorean,", 61047, L"" },
{ NCP_EXTERNAL_8BIT | NCP_RECODE, 949, "windows-949,windows949,ksc56011987,csksc5601,euckr,isoir149,korean,ksc56011989", 61048, L"" },
{ NCP_EXTERNAL_8BIT | NCP_RECODE, 28593, "iso-8859-3,iso88593,latin3,isoir109,l3,", 61049, L"" },
{ NCP_EXTERNAL_8BIT | NCP_RECODE, 28605, "iso-8859-15,iso885915,latin9,l9,", 61050, L"" },
{ NCP_EXTERNAL_8BIT | NCP_RECODE, 865, "ibm865,ibm865,", 61051, L"" },
{ NCP_EXTERNAL_8BIT | NCP_RECODE, 437, "ibm437,ibm437,437,cp437,cspc8,codepage437,", 61052, L"" },
{ NCP_EXTERNAL_8BIT | NCP_RECODE, 858, "ibm858,ibm858,ibm00858,", 61053, L"" },
{ NCP_EXTERNAL_8BIT | NCP_RECODE, 860, "ibm860,ibm860,", 61054, L"" },
{ NCP_EXTERNAL_8BIT | NCP_RECODE, 10010, "x-mac-romanian,xmacromanian,", 61055, L"" },
{ NCP_EXTERNAL_8BIT | NCP_RECODE, 10021, "x-mac-thai,xmacthai,", 61056, L"" },
{ NCP_EXTERNAL_8BIT | NCP_RECODE, 874, "windows-874,windows874,dos874,iso885911,tis620,", 61057, L"" },
{ NCP_EXTERNAL_8BIT | NCP_RECODE, 857, "ibm857,ibm857,", 61058, L"" },
{ NCP_EXTERNAL_8BIT | NCP_RECODE, 28599, "iso-8859-9,iso88599,latin5,isoir148,l5,", 61059, L"" },
{ NCP_EXTERNAL_8BIT | NCP_RECODE, 10081, "x-mac-turkish,xmacturkish,", 61060, L"" },
{ NCP_EXTERNAL_8BIT | NCP_RECODE, 1254, "windows-1254,windows1254,", 61061, L"" },
{ NCP_EXTERNAL_8BIT | NCP_RECODE, 10017, "x-mac-ukrainian,xmacukrainian,", 61062, L"" },
{ NCP_EXTERNAL_8BIT | NCP_RECODE, 1258, "windows-1258,windows-258,", 61063, L"" },
{ NCP_EXTERNAL_8BIT | NCP_RECODE, 850, "ibm850,ibm850,", 61064, L"" },
{ NCP_EXTERNAL_8BIT | NCP_RECODE, 28591, "iso-8859-1,iso88591,cp819,latin1,ibm819,isoir100,latin1,l1,", 61065, L"" },
{ NCP_EXTERNAL_8BIT | NCP_RECODE, 10000, "macintosh,macintosh,", 61066, L"" },
{ NCP_EXTERNAL_8BIT | NCP_RECODE, 1252, "windows-1252,windows1252,cp367,cp819,ibm367,us,xansi,", 61067, L"" },
{ NCP_EXTERNAL_8BIT | NCP_RECODE, 37, "ebcdic-cp-us,ebcdiccpus,ebcdiccpca,ebcdiccpwt,ebcdiccpnl,ibm037,cp037,", 61068, L"" },
{ NCP_EXTERNAL_8BIT | NCP_RECODE, 500, "x-ebcdic-international,xebcdicinternational,", 61069, L"" },
{ NCP_EXTERNAL_8BIT | NCP_RECODE, 875, "x-EBCDIC-GreekModern,xebcdicgreekmodern,", 61070, L"" },
{ NCP_EXTERNAL_8BIT | NCP_RECODE, 1026, "CP1026,cp1026,csibm1026,ibm1026,", 61071, L"" },
//{ NCP_EXTERNAL_8BIT|NCP_RECODE, 870, "CP870,cp870,ebcdiccproece,ebcdiccpyu,csibm870,ibm870,", 00000, L"" }, // IBM EBCDIC (Multilingual Latin-2)
//{ NCP_EXTERNAL_8BIT|NCP_RECODE, 1047, "IBM01047,ibm01047,", 00000, L"" }, // IBM EBCDIC (Open System Latin-1)
//{ NCP_EXTERNAL_8BIT|NCP_RECODE, 1140, "x-ebcdic-cp-us-euro,xebcdiccpuseuro,", 00000, L"" }, // IBM EBCDIC (US-Canada-Euro)
//{ NCP_EXTERNAL_8BIT|NCP_RECODE, 1141, "x-ebcdic-germany-euro,xebcdicgermanyeuro,", 00000, L"" }, // IBM EBCDIC (Germany-Euro)
//{ NCP_EXTERNAL_8BIT|NCP_RECODE, 1142, "x-ebcdic-denmarknorway-euro,xebcdicdenmarknorwayeuro,", 00000, L"" }, // IBM EBCDIC (Denmark-Norway-Euro)
//{ NCP_EXTERNAL_8BIT|NCP_RECODE, 1143, "x-ebcdic-finlandsweden-euro,xebcdicfinlandswedeneuro,", 00000, L"" }, // IBM EBCDIC (Finland-Sweden-Euro)
//{ NCP_EXTERNAL_8BIT|NCP_RECODE, 1144, "x-ebcdic-italy-euro,xebcdicitalyeuro,", 00000, L"" }, // IBM EBCDIC (Italy-Euro)
//{ NCP_EXTERNAL_8BIT|NCP_RECODE, 1145, "x-ebcdic-spain-euro,xebcdicspaineuro,", 00000, L"" }, // IBM EBCDIC (Spain-Latin America-Euro)
//{ NCP_EXTERNAL_8BIT|NCP_RECODE, 1146, "x-ebcdic-uk-euro,xebcdicukeuro,", 00000, L"" }, // IBM EBCDIC (UK-Euro)
//{ NCP_EXTERNAL_8BIT|NCP_RECODE, 1147, "x-ebcdic-france-euro,xebcdicfranceeuro,", 00000, L"" }, // IBM EBCDIC (France-Euro)
//{ NCP_EXTERNAL_8BIT|NCP_RECODE, 1148, "x-ebcdic-international-euro,xebcdicinternationaleuro,", 00000, L"" }, // IBM EBCDIC (International-Euro)
//{ NCP_EXTERNAL_8BIT|NCP_RECODE, 1149, "x-ebcdic-icelandic-euro,xebcdicicelandiceuro,", 00000, L"" }, // IBM EBCDIC (Icelandic-Euro)
//{ NCP_EXTERNAL_8BIT|NCP_RECODE, 1361, "johab,johab,", 00000, L"" }, // Korean (Johab)
//{ NCP_EXTERNAL_8BIT|NCP_RECODE, 20273, "x-EBCDIC-Germany,xebcdicgermany,", 00000, L"" }, // IBM EBCDIC (Germany)
//{ NCP_EXTERNAL_8BIT|NCP_RECODE, 20277, "x-EBCDIC-DenmarkNorway,xebcdicdenmarknorway,ebcdiccpdk,ebcdiccpno,", 00000, L"" }, // IBM EBCDIC (Denmark-Norway)
//{ NCP_EXTERNAL_8BIT|NCP_RECODE, 20278, "x-EBCDIC-FinlandSweden,xebcdicfinlandsweden,ebcdicpfi,ebcdiccpse,", 00000, L"" }, // IBM EBCDIC (Finland-Sweden)
//{ NCP_EXTERNAL_8BIT|NCP_RECODE, 20280, "x-EBCDIC-Italy,xebcdicitaly,", 00000, L"" }, // IBM EBCDIC (Italy)
//{ NCP_EXTERNAL_8BIT|NCP_RECODE, 20284, "x-EBCDIC-Spain,xebcdicspain,ebcdiccpes,", 00000, L"" }, // IBM EBCDIC (Spain-Latin America)
//{ NCP_EXTERNAL_8BIT|NCP_RECODE, 20285, "x-EBCDIC-UK,xebcdicuk,ebcdiccpgb,", 00000, L"" }, // IBM EBCDIC (UK)
//{ NCP_EXTERNAL_8BIT|NCP_RECODE, 20290, "x-EBCDIC-JapaneseKatakana,xebcdicjapanesekatakana,", 00000, L"" }, // IBM EBCDIC (Japanese Katakana)
//{ NCP_EXTERNAL_8BIT|NCP_RECODE, 20297, "x-EBCDIC-France,xebcdicfrance,ebcdiccpfr,", 00000, L"" }, // IBM EBCDIC (France)
//{ NCP_EXTERNAL_8BIT|NCP_RECODE, 20420, "x-EBCDIC-Arabic,xebcdicarabic,ebcdiccpar1,", 00000, L"" }, // IBM EBCDIC (Arabic)
//{ NCP_EXTERNAL_8BIT|NCP_RECODE, 20423, "x-EBCDIC-Greek,xebcdicgreek,ebcdiccpgr,", 00000, L"" }, // IBM EBCDIC (Greek)
//{ NCP_EXTERNAL_8BIT|NCP_RECODE, 20424, "x-EBCDIC-Hebrew,xebcdichebrew,ebcdiccphe,", 00000, L"" }, // IBM EBCDIC (Hebrew)
//{ NCP_EXTERNAL_8BIT|NCP_RECODE, 20833, "x-EBCDIC-KoreanExtended,xebcdickoreanextended,", 00000, L"" }, // IBM EBCDIC (Korean Extended)
//{ NCP_EXTERNAL_8BIT|NCP_RECODE, 20838, "x-EBCDIC-Thai,xebcdicthai,ibmthai,csibmthai,", 00000, L"" }, // IBM EBCDIC (Thai)
//{ NCP_EXTERNAL_8BIT|NCP_RECODE, 20871, "x-EBCDIC-Icelandic,xebcdicicelandic,ebcdiccpis,", 00000, L"" }, // IBM EBCDIC (Icelandic)
//{ NCP_EXTERNAL_8BIT|NCP_RECODE, 20880, "x-EBCDIC-CyrillicRussian,xebcdiccyrillicrussian,ebcdiccyrillic,", 00000, L"" }, // IBM EBCDIC (Cyrillic Russian)
//{ NCP_EXTERNAL_8BIT|NCP_RECODE, 20905, "x-EBCDIC-Turkish,xebcdicturkish,ebcdiccptr,", 00000, L"" }, // IBM EBCDIC (Turkish)
//{ NCP_EXTERNAL_8BIT|NCP_RECODE, 20924, "IBM00924,ibm00924,ebcdiclatin9euro,", 00000, L"" }, // IBM EBCDIC (Open System-Euro Latin-1)
//{ NCP_EXTERNAL_8BIT|NCP_RECODE, 21025, "x-EBCDIC-CyrillicSerbianBulgarian,xebcdiccyrillicserbianbulgarian,", 00000, L"" }, // IBM EBCDIC (Cyrillic Serbian-Bulgarian)
//{ NCP_EXTERNAL_8BIT|NCP_RECODE, 50930, "x-EBCDIC-JapaneseAndKana,xebcdicjapaneseandkana,", 00000, L"" }, // IBM EBCDIC (Japanese and Japanese Katakana)
//{ NCP_EXTERNAL_8BIT|NCP_RECODE, 50931, "x-EBCDIC-JapaneseAndUSCanada,xebcdicjapaneseanduscanada,", 00000, L"" }, // IBM EBCDIC (Japanese and US-Canada)
//{ NCP_EXTERNAL_8BIT|NCP_RECODE, 50933, "x-EBCDIC-KoreanAndKoreanExtended,xebcdickoreanandkoreanextended,", 00000, L"" }, // IBM EBCDIC (Korean and Korean Extended)
//{ NCP_EXTERNAL_8BIT|NCP_RECODE, 50935, "x-EBCDIC-SimplifiedChinese,xebcdicsimplifiedchinese,", 00000, L"" }, // IBM EBCDIC (Chinese Simplified)
//{ NCP_EXTERNAL_8BIT|NCP_RECODE, 50937, "x-EBCDIC-TraditionalChinese,xebcdictraditionalchinese,", 00000, L"" }, // IBM EBCDIC (Chinese Traditional)
//{ NCP_EXTERNAL_8BIT|NCP_RECODE, 50939, "x-EBCDIC-JapaneseAndJapaneseLatin,xebcdicjapaneseandjapaneselatin,", 00000, L"" }, // IBM EBCDIC (Japanese and Japanese-Latin)
//{ NCP_EXTERNAL_8BIT|NCP_RECODE, 20105, "x-IA5,xia5,", 00000, L"" }, // Western European (IA5)
//{ NCP_EXTERNAL_8BIT|NCP_RECODE, 20106, "x-IA5-German,xia5german,", 00000, L"" }, // German (IA5)
//{ NCP_EXTERNAL_8BIT|NCP_RECODE, 20107, "x-IA5-Swedish,xia5swedish,", 00000, L"" }, // Swedish (IA5)
//{ NCP_EXTERNAL_8BIT|NCP_RECODE, 20108, "x-IA5-Norwegian,xia5norwegian,", 00000, L"" }, // Norwegian (IA5)
//{ NCP_EXTERNAL_8BIT|NCP_RECODE, 20936, "x-cp20936,xcp20936,", 00000, L"" }, // Chinese Simplified (GB2312)
//{ NCP_EXTERNAL_8BIT|NCP_RECODE, 20932, "euc-jp,,", 00000, L"" }, // Japanese (JIS X 0208-1990 & 0212-1990)
//{ NCP_EXTERNAL_8BIT|NCP_RECODE, 50220, "iso-2022-jp,iso2022jp,", 00000, L"" }, // Japanese (JIS)
//{ NCP_EXTERNAL_8BIT|NCP_RECODE, 50221, "csISO2022JP,csiso2022jp,", 00000, L"" }, // Japanese (JIS-Allow 1 byte Kana)
//{ NCP_EXTERNAL_8BIT|NCP_RECODE, 50222, "_iso-2022-jp$SIO,iso2022jpSIO,", 00000, L"" }, // Japanese (JIS-Allow 1 byte Kana - SO/SI)
//{ NCP_EXTERNAL_8BIT|NCP_RECODE, 50225, "iso-2022-kr,iso2022kr,csiso2022kr,", 00000, L"" }, // Korean (ISO-2022-KR)
//{ NCP_EXTERNAL_8BIT|NCP_RECODE, 50227, "x-cp50227,xcp50227,", 00000, L"" }, // Chinese Simplified (ISO-2022)
//{ NCP_EXTERNAL_8BIT|NCP_RECODE, 50229, "iso-2022-cn,iso2022cn,", 00000, L"" }, // Chinese Traditional (ISO-2022)
//{ NCP_EXTERNAL_8BIT|NCP_RECODE, 20000, "x-Chinese-CNS,xchinesecns,", 00000, L"" }, // Chinese Traditional (CNS)
//{ NCP_EXTERNAL_8BIT|NCP_RECODE, 20002, "x-Chinese-Eten,xchineseeten,", 00000, L"" }, // Chinese Traditional (Eten)
//{ NCP_EXTERNAL_8BIT|NCP_RECODE, 51932, "euc-jp,eucjp,xeuc,xeucjp,", 00000, L"" }, // Japanese (EUC)
//{ NCP_EXTERNAL_8BIT|NCP_RECODE, 51936, "euc-cn,euccn,xeuccn,", 00000, L"" }, // Chinese Simplified (EUC)
//{ NCP_EXTERNAL_8BIT|NCP_RECODE, 51949, "euc-kr,euckr,cseuckr,", 00000, L"" }, // Korean (EUC)
//{ NCP_EXTERNAL_8BIT|NCP_RECODE, 52936, "hz-gb-2312,hzgb2312,hz,", 00000, L"" }, // Chinese Simplified (HZ-GB2312)
{ NCP_EXTERNAL_8BIT | NCP_RECODE, 54936, "gb18030,gb18030,", 61072, L"" } // Chinese Simplified (GB18030)
//{ NCP_EXTERNAL_8BIT|NCP_RECODE, 57002, "x-iscii-de,xisciide,", 00000, L"" }, // ISCII Devanagari
//{ NCP_EXTERNAL_8BIT|NCP_RECODE, 57003, "x-iscii-be,xisciibe,", 00000, L"" }, // ISCII Bengali
//{ NCP_EXTERNAL_8BIT|NCP_RECODE, 57004, "x-iscii-ta,xisciita,", 00000, L"" }, // ISCII Tamil
//{ NCP_EXTERNAL_8BIT|NCP_RECODE, 57005, "x-iscii-te,xisciite,", 00000, L"" }, // ISCII Telugu
//{ NCP_EXTERNAL_8BIT|NCP_RECODE, 57006, "x-iscii-as,xisciias,", 00000, L"" }, // ISCII Assamese
//{ NCP_EXTERNAL_8BIT|NCP_RECODE, 57007, "x-iscii-or,xisciior,", 00000, L"" }, // ISCII Oriya
//{ NCP_EXTERNAL_8BIT|NCP_RECODE, 57008, "x-iscii-ka,xisciika,", 00000, L"" }, // ISCII Kannada
//{ NCP_EXTERNAL_8BIT|NCP_RECODE, 57009, "x-iscii-ma,xisciima,", 00000, L"" }, // ISCII Malayalam
//{ NCP_EXTERNAL_8BIT|NCP_RECODE, 57010, "x-iscii-gu,xisciigu,", 00000, L"" }, // ISCII Gujarathi
//{ NCP_EXTERNAL_8BIT|NCP_RECODE, 57011, "x-iscii-pa,xisciipa,", 00000, L"" }, // ISCII Panjabi
};
int Encoding_CountOf() {
@ -2925,7 +2925,7 @@ int Encoding_Current(int iEncoding) {
}
int Encoding_Source(int iSrcEncoding) {
int Encoding_SrcCmdLn(int iSrcEncoding) {
static int SourceEncoding = CPI_NONE;
if (iSrcEncoding >= 0) {
@ -2983,8 +2983,8 @@ void Encoding_InitDefaults() {
for (int i = CPI_UTF7 + 1; i < COUNTOF(g_Encodings); ++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_8BIT)
g_Encodings[CPI_ANSI_DEFAULT].uFlags |= NCP_8BIT;
if (g_Encodings[i].uFlags & NCP_EXTERNAL_8BIT)
g_Encodings[CPI_ANSI_DEFAULT].uFlags |= NCP_EXTERNAL_8BIT;
break;
}
}
@ -2995,8 +2995,8 @@ void Encoding_InitDefaults() {
for (int i = CPI_UTF7 + 1; i < COUNTOF(g_Encodings); ++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_8BIT)
g_Encodings[CPI_OEM].uFlags |= NCP_8BIT;
if (g_Encodings[i].uFlags & NCP_EXTERNAL_8BIT)
g_Encodings[CPI_OEM].uFlags |= NCP_EXTERNAL_8BIT;
break;
}
}
@ -3282,8 +3282,6 @@ void Encoding_AddToComboboxEx(HWND hwnd,int idSel,BOOL bRecodeOnly) {
int id = pEE[i].id;
if (!bRecodeOnly || (g_Encodings[id].uFlags & NCP_RECODE)) {
CPINFO cpi;
cbei.iItem = SendMessage(hwnd,CB_GETCOUNT,0,0);
WCHAR *pwsz = StrChr(pEE[i].wch,L';');
@ -3301,12 +3299,7 @@ void Encoding_AddToComboboxEx(HWND hwnd,int idSel,BOOL bRecodeOnly) {
else if (id == CPI_OEM)
StringCchCatN(wchBuf,COUNTOF(wchBuf),wchOEM,COUNTOF(wchOEM));
if ((g_Encodings[id].uFlags & NCP_INTERNAL) ||
(IsValidCodePage(g_Encodings[id].uCodePage) &&
GetCPInfo(g_Encodings[id].uCodePage,&cpi)))
cbei.iImage = 0;
else
cbei.iImage = 1;
cbei.iImage = (Encoding_IsValid(id) ? 0 : 1);
cbei.lParam = (LPARAM)id;
SendMessage(hwnd,CBEM_INSERTITEM,0,(LPARAM)&cbei);
@ -3341,6 +3334,8 @@ BOOL Encoding_GetFromComboboxEx(HWND hwnd,int *pidEncoding) {
}
BOOL Encoding_IsDefault(int iEncoding) {
return (g_Encodings[iEncoding].uFlags & NCP_DEFAULT);
}
@ -3354,6 +3349,8 @@ BOOL Encoding_IsOEM(int iEncoding) {
}
UINT Encoding_SciGetCodePage(HWND hwnd) {
UNUSED(hwnd);
return CP_UTF8;
// remove internal support for Chinese, Japan, Korean DBCS use UTF-8 instead
/*
int cp = (UINT)SendMessage(hwnd,SCI_GETCODEPAGE,0,0);
@ -3362,12 +3359,12 @@ UINT Encoding_SciGetCodePage(HWND hwnd) {
}
return (cp == 0) ? CP_ACP : CP_UTF8;
*/
UNUSED(hwnd);
return CP_UTF8;
}
int Encoding_SciMappedCodePage(int iEncoding) {
UNUSED(iEncoding);
return SC_CP_UTF8;
// remove internal support for Chinese, Japan, Korean DBCS use UTF-8 instead
/*
if (Encoding_IsValid(iEncoding)) {
@ -3378,8 +3375,6 @@ int Encoding_SciMappedCodePage(int iEncoding) {
}
}
*/
UNUSED(iEncoding);
return SC_CP_UTF8;
}
@ -3403,7 +3398,7 @@ void Encoding_SciSetCodePage(HWND hwnd,int iEncoding) {
charset = SC_CHARSET_CHINESEBIG5;
break;
default:
charset = iDefaultCharSet;
charset = g_iDefaultCharSet;
break;
}
SendMessage(hwnd,SCI_STYLESETCHARACTERSET,(WPARAM)STYLE_DEFAULT,(LPARAM)charset);

View File

@ -357,12 +357,12 @@ extern int g_DOSEncoding;
#define NCP_UNICODE 8
#define NCP_UNICODE_REVERSE 16
#define NCP_UNICODE_BOM 32
#define NCP_8BIT 64
#define NCP_ANSI 128
#define NCP_OEM 256
#define NCP_MBCS 512
#define NCP_INTERNAL (NCP_DEFAULT|NCP_UTF8|NCP_UTF8_SIGN|NCP_UNICODE|NCP_UNICODE_REVERSE|NCP_UNICODE_BOM|NCP_ANSI|NCP_OEM|NCP_MBCS)
#define NCP_RECODE 1024
#define NCP_ANSI 64
#define NCP_OEM 128
#define NCP_MBCS 256
#define NCP_INTERNAL (NCP_DEFAULT|NCP_UTF8|NCP_UTF8_SIGN|NCP_UNICODE|NCP_UNICODE_REVERSE|NCP_UNICODE_BOM|NCP_ANSI|NCP_OEM|NCP_MBCS)
#define NCP_EXTERNAL_8BIT 512
#define NCP_RECODE 1024
#define CPI_GET -2
#define CPI_NONE -1
@ -389,7 +389,7 @@ typedef struct _np2encoding {
int Encoding_CountOf();
int Encoding_Current(int); // getter/setter
int Encoding_Source(int); // getter/setter
int Encoding_SrcCmdLn(int); // getter/setter
int Encoding_SrcWeak(int); // getter/setter
BOOL Encoding_HasChanged(int); // query/setter

View File

@ -254,11 +254,11 @@ LPMRULIST mruReplace;
DWORD dwLastIOError;
int iDefaultEncoding;
int iDefaultCharSet;
int g_iDefaultEncoding;
int g_iDefaultCharSet;
int iEOLMode;
int iDefaultEOLMode;
int g_iEOLMode;
int g_iDefaultEOLMode;
int iInitialLine;
int iInitialColumn;
@ -282,7 +282,8 @@ UINT msgTaskbarCreated = 0;
HMODULE hModUxTheme = NULL;
HMODULE hRichEdit = NULL;
EDITFINDREPLACE g_efrData = { "", "", "", "", 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL };
EDITFINDREPLACE g_efrData = EFR_INIT_DATA;
UINT cpLastFind = 0;
BOOL bReplaceInitialized = FALSE;
@ -734,7 +735,7 @@ HWND InitInstance(HINSTANCE hInstance,LPSTR pszCmdLine,int nCmdShow)
// Source Encoding
if (lpEncodingArg)
Encoding_Source(Encoding_MatchW(lpEncodingArg));
Encoding_SrcCmdLn(Encoding_MatchW(lpEncodingArg));
// Pathname parameter
if (flagBufferFile || (lpFileArg /*&& !flagNewFromClipboard*/))
@ -792,15 +793,15 @@ HWND InitInstance(HINSTANCE hInstance,LPSTR pszCmdLine,int nCmdShow)
}
}
else {
if (Encoding_Source(CPI_GET) != CPI_NONE) {
Encoding_Current(Encoding_Source(CPI_GET));
Encoding_HasChanged(Encoding_Source(CPI_GET));
if (Encoding_SrcCmdLn(CPI_GET) != CPI_NONE) {
Encoding_Current(Encoding_SrcCmdLn(CPI_GET));
Encoding_HasChanged(Encoding_SrcCmdLn(CPI_GET));
Encoding_SciSetCodePage(g_hwndEdit,Encoding_Current(CPI_GET));
}
}
// reset
Encoding_Source(CPI_NONE);
Encoding_SrcCmdLn(CPI_NONE);
flagQuietCreate = 0;
fKeepTitleExcerpt = 0;
@ -1840,7 +1841,7 @@ LRESULT MsgCopyData(HWND hwnd, WPARAM wParam, LPARAM lParam)
if (params->flagFileSpecified) {
BOOL bOpened = FALSE;
Encoding_Source(params->iSrcEncoding);
Encoding_SrcCmdLn(params->iSrcEncoding);
if (PathIsDirectory(&params->wchData)) {
WCHAR tchFile[MAX_PATH] = { L'\0' };
@ -1876,11 +1877,7 @@ LRESULT MsgCopyData(HWND hwnd, WPARAM wParam, LPARAM lParam)
if (0 != params->flagSetEOLMode) {
flagSetEOLMode = params->flagSetEOLMode;
SendMessage(
g_hwndMain,
WM_COMMAND,
MAKELONG(IDM_LINEENDINGS_CRLF + flagSetEOLMode - 1, 1),
0);
SendMessage(g_hwndMain, WM_COMMAND, MAKELONG(IDM_LINEENDINGS_CRLF + flagSetEOLMode - 1, 1), 0);
flagSetEOLMode = 0;
}
@ -1899,7 +1896,7 @@ LRESULT MsgCopyData(HWND hwnd, WPARAM wParam, LPARAM lParam)
}
}
// reset
Encoding_Source(CPI_NONE);
Encoding_SrcCmdLn(CPI_NONE);
}
if (params->flagJumpTo) {
@ -2127,9 +2124,9 @@ void MsgInitMenu(HWND hwnd,WPARAM wParam,LPARAM lParam)
i = -1;
CheckMenuRadioItem(hmenu,IDM_ENCODING_ANSI,IDM_ENCODING_UTF8SIGN,i,MF_BYCOMMAND);
if (iEOLMode == SC_EOL_CRLF)
if (g_iEOLMode == SC_EOL_CRLF)
i = IDM_LINEENDINGS_CRLF;
else if (iEOLMode == SC_EOL_LF)
else if (g_iEOLMode == SC_EOL_LF)
i = IDM_LINEENDINGS_LF;
else
i = IDM_LINEENDINGS_CR;
@ -2725,7 +2722,7 @@ LRESULT MsgCommand(HWND hwnd, WPARAM wParam, LPARAM lParam)
if (RecodeDlg(hwnd,&iNewEncoding))
{
StringCchCopy(tchCurFile2,COUNTOF(tchCurFile2),g_wchCurFile);
Encoding_Source(iNewEncoding);
Encoding_SrcCmdLn(iNewEncoding);
FileLoad(TRUE,FALSE,TRUE,FALSE,tchCurFile2);
}
}
@ -2734,7 +2731,7 @@ LRESULT MsgCommand(HWND hwnd, WPARAM wParam, LPARAM lParam)
case IDM_ENCODING_SETDEFAULT:
SelectDefEncodingDlg(hwnd,&iDefaultEncoding);
SelectDefEncodingDlg(hwnd,&g_iDefaultEncoding);
break;
@ -2744,9 +2741,9 @@ LRESULT MsgCommand(HWND hwnd, WPARAM wParam, LPARAM lParam)
{
BeginWaitCursor(NULL)
int iNewEOLMode = iLineEndings[LOWORD(wParam)-IDM_LINEENDINGS_CRLF];
iEOLMode = iNewEOLMode;
SendMessage(g_hwndEdit,SCI_SETEOLMODE,iEOLMode,0);
SendMessage(g_hwndEdit,SCI_CONVERTEOLS,iEOLMode,0);
g_iEOLMode = iNewEOLMode;
SendMessage(g_hwndEdit,SCI_SETEOLMODE,g_iEOLMode,0);
SendMessage(g_hwndEdit,SCI_CONVERTEOLS,g_iEOLMode,0);
EditFixPositions(g_hwndEdit);
EndWaitCursor()
UpdateToolbar();
@ -2756,7 +2753,7 @@ LRESULT MsgCommand(HWND hwnd, WPARAM wParam, LPARAM lParam)
case IDM_LINEENDINGS_SETDEFAULT:
SelectDefLineEndingDlg(hwnd,&iDefaultEOLMode);
SelectDefLineEndingDlg(hwnd,&g_iDefaultEOLMode);
break;
@ -4469,7 +4466,7 @@ LRESULT MsgCommand(HWND hwnd, WPARAM wParam, LPARAM lParam)
{
WCHAR tchCurFile2[MAX_PATH] = { L'\0' };
if (StringCchLenW(g_wchCurFile,COUNTOF(g_wchCurFile))) {
Encoding_Source(Encoding_MapUnicode(iDefaultEncoding));
Encoding_SrcCmdLn(Encoding_MapUnicode(g_iDefaultEncoding));
StringCchCopy(tchCurFile2,COUNTOF(tchCurFile2),g_wchCurFile);
FileLoad(FALSE,FALSE,TRUE,TRUE,tchCurFile2);
}
@ -4481,7 +4478,7 @@ LRESULT MsgCommand(HWND hwnd, WPARAM wParam, LPARAM lParam)
{
WCHAR tchCurFile2[MAX_PATH] = { L'\0' };
if (StringCchLenW(g_wchCurFile,COUNTOF(g_wchCurFile))) {
Encoding_Source(CPI_ANSI_DEFAULT);
Encoding_SrcCmdLn(CPI_ANSI_DEFAULT);
StringCchCopy(tchCurFile2,COUNTOF(tchCurFile2),g_wchCurFile);
FileLoad(FALSE,FALSE,TRUE,TRUE,tchCurFile2);
}
@ -4493,7 +4490,7 @@ LRESULT MsgCommand(HWND hwnd, WPARAM wParam, LPARAM lParam)
{
WCHAR tchCurFile2[MAX_PATH] = { L'\0' };
if (StringCchLenW(g_wchCurFile,COUNTOF(g_wchCurFile))) {
Encoding_Source(CPI_OEM);
Encoding_SrcCmdLn(CPI_OEM);
StringCchCopy(tchCurFile2,COUNTOF(tchCurFile2),g_wchCurFile);
FileLoad(FALSE,FALSE,TRUE,TRUE,tchCurFile2);
}
@ -4566,8 +4563,9 @@ LRESULT MsgCommand(HWND hwnd, WPARAM wParam, LPARAM lParam)
struct tm sst;
UINT cp;
EDITFINDREPLACE efrTS = { "", "", "", "", SCFIND_REGEXP, 0, 0, 0, 0, 0, 0, 0, 0, NULL };
EDITFINDREPLACE efrTS = EFR_INIT_DATA;
efrTS.hwnd = g_hwndEdit;
efrTS.fuFlags = SCFIND_REGEXP;
IniGetString(L"Settings2",L"TimeStamp",L"\\$Date:[^\\$]+\\$ | $Date: %Y/%m/%d %H:%M:%S $",wchFind,COUNTOF(wchFind));
@ -5372,7 +5370,7 @@ LRESULT MsgNotify(HWND hwnd,WPARAM wParam,LPARAM lParam)
if (bAutoIndent && (scn->ch == '\x0D' || scn->ch == '\x0A'))
{
// in CRLF mode handle LF only...
if ((SC_EOL_CRLF == iEOLMode && scn->ch != '\x0A') || SC_EOL_CRLF != iEOLMode)
if ((SC_EOL_CRLF == g_iEOLMode && scn->ch != '\x0A') || SC_EOL_CRLF != g_iEOLMode)
{
DocPos iCurPos = SciCall_GetCurrentPos();
DocLn iCurLine = SciCall_LineFromPosition(iCurPos);
@ -5608,9 +5606,9 @@ LRESULT MsgNotify(HWND hwnd,WPARAM wParam,LPARAM lParam)
return TRUE;
case STATUS_EOLMODE:
if (iEOLMode == SC_EOL_CRLF)
if (g_iEOLMode == SC_EOL_CRLF)
i = IDM_LINEENDINGS_CRLF;
else if (iEOLMode == SC_EOL_LF)
else if (g_iEOLMode == SC_EOL_LF)
i = IDM_LINEENDINGS_LF;
else
i = IDM_LINEENDINGS_CR;
@ -5798,10 +5796,10 @@ void LoadSettings()
bViewEOLs = IniSectionGetBool(pIniSection,L"ViewEOLs", FALSE);
iDefaultEncoding = IniSectionGetInt(pIniSection,L"DefaultEncoding", CPI_NONE);
g_iDefaultEncoding = IniSectionGetInt(pIniSection,L"DefaultEncoding", CPI_NONE);
// if DefaultEncoding is not defined set to system's current code-page
iDefaultEncoding = (iDefaultEncoding == CPI_NONE) ?
Encoding_MapIniSetting(TRUE,(int)GetACP()) : Encoding_MapIniSetting(TRUE,iDefaultEncoding);
g_iDefaultEncoding = (g_iDefaultEncoding == CPI_NONE) ?
Encoding_MapIniSetting(TRUE,(int)GetACP()) : Encoding_MapIniSetting(TRUE,g_iDefaultEncoding);
bSkipUnicodeDetection = IniSectionGetBool(pIniSection, L"SkipUnicodeDetection", FALSE);
@ -5811,8 +5809,8 @@ void LoadSettings()
bNoEncodingTags = IniSectionGetBool(pIniSection,L"NoEncodingTags", FALSE);
iDefaultEOLMode = IniSectionGetInt(pIniSection,L"DefaultEOLMode",0);
iDefaultEOLMode = max(min(iDefaultEOLMode,2),0);
g_iDefaultEOLMode = IniSectionGetInt(pIniSection,L"DefaultEOLMode",0);
g_iDefaultEOLMode = max(min(g_iDefaultEOLMode,2),0);
bFixLineEndings = IniSectionGetBool(pIniSection,L"FixLineEndings",TRUE);
@ -6005,22 +6003,22 @@ void LoadSettings()
// remove internal support for Chinese, Japan, Korean DBCS use UTF-8 instead
/*
if (iDefaultEncoding == CPI_ANSI_DEFAULT)
if (g_iDefaultEncoding == CPI_ANSI_DEFAULT)
{
// check for Chinese, Japan, Korean DBCS code pages and switch accordingly
int acp = (int)GetACP();
if (acp == 932 || acp == 936 || acp == 949 || acp == 950) {
iSciDefaultCodePage = acp;
}
iDefaultEncoding = Encoding_GetByCodePage(iSciDefaultCodePage);
g_iDefaultEncoding = Encoding_GetByCodePage(iSciDefaultCodePage);
}
*/
// set flag for encoding default
g_Encodings[iDefaultEncoding].uFlags |= NCP_DEFAULT;
g_Encodings[g_iDefaultEncoding].uFlags |= NCP_DEFAULT;
// define default charset
iDefaultCharSet = (int)CharSetFromCodePage((UINT)iSciDefaultCodePage);
g_iDefaultCharSet = (int)CharSetFromCodePage((UINT)iSciDefaultCodePage);
// Scintilla Styles
Style_Load();
@ -6103,12 +6101,12 @@ void SaveSettings(BOOL bSaveSettingsNow) {
IniSectionSetBool(pIniSection, L"MarkOccurrencesCurrentWord", bMarkOccurrencesCurrentWord);
IniSectionSetBool(pIniSection, L"ViewWhiteSpace", bViewWhiteSpace);
IniSectionSetBool(pIniSection, L"ViewEOLs", bViewEOLs);
IniSectionSetInt(pIniSection, L"DefaultEncoding", Encoding_MapIniSetting(FALSE, iDefaultEncoding));
IniSectionSetInt(pIniSection, L"DefaultEncoding", Encoding_MapIniSetting(FALSE, g_iDefaultEncoding));
IniSectionSetBool(pIniSection, L"SkipUnicodeDetection", bSkipUnicodeDetection);
IniSectionSetInt(pIniSection, L"LoadASCIIasUTF8", bLoadASCIIasUTF8);
IniSectionSetBool(pIniSection, L"LoadNFOasOEM", bLoadNFOasOEM);
IniSectionSetBool(pIniSection, L"NoEncodingTags", bNoEncodingTags);
IniSectionSetInt(pIniSection, L"DefaultEOLMode", iDefaultEOLMode);
IniSectionSetInt(pIniSection, L"DefaultEOLMode", g_iDefaultEOLMode);
IniSectionSetBool(pIniSection, L"FixLineEndings", bFixLineEndings);
IniSectionSetBool(pIniSection, L"FixTrailingBlanks", bAutoStripBlanks);
IniSectionSetInt(pIniSection, L"PrintHeader", iPrintHeader);
@ -7057,11 +7055,11 @@ void UpdateStatusbar()
Encoding_SetLabel(iEncoding);
StringCchPrintf(tchEncoding, COUNTOF(tchEncoding), L" %s ", g_Encodings[iEncoding].wchLabel);
if (iEOLMode == SC_EOL_CR)
if (g_iEOLMode == SC_EOL_CR)
{
StringCchCopy(tchEOLMode, COUNTOF(tchEOLMode), L" CR ");
}
else if (iEOLMode == SC_EOL_LF)
else if (g_iEOLMode == SC_EOL_LF)
{
StringCchCopy(tchEOLMode, COUNTOF(tchEOLMode), L" LF ");
}
@ -7435,11 +7433,11 @@ BOOL FileLoad(BOOL bDontSave,BOOL bNew,BOOL bReload,BOOL bNoEncDetect,LPCWSTR lp
EditSetNewText(g_hwndEdit,"",0);
Style_SetLexer(g_hwndEdit,NULL);
iEOLMode = iLineEndings[iDefaultEOLMode];
SendMessage(g_hwndEdit,SCI_SETEOLMODE,iLineEndings[iDefaultEOLMode],0);
Encoding_Current(iDefaultEncoding);
Encoding_HasChanged(iDefaultEncoding);
Encoding_SciSetCodePage(g_hwndEdit,iDefaultEncoding);
g_iEOLMode = iLineEndings[g_iDefaultEOLMode];
SendMessage(g_hwndEdit,SCI_SETEOLMODE,iLineEndings[g_iDefaultEOLMode],0);
Encoding_Current(g_iDefaultEncoding);
Encoding_HasChanged(g_iDefaultEncoding);
Encoding_SciSetCodePage(g_hwndEdit,g_iDefaultEncoding);
EditSetNewText(g_hwndEdit,"",0);
bReadOnly = FALSE;
@ -7505,16 +7503,16 @@ BOOL FileLoad(BOOL bDontSave,BOOL bNew,BOOL bReload,BOOL bNoEncDetect,LPCWSTR lp
FileVars_Init(NULL,0,&fvCurFile);
EditSetNewText(g_hwndEdit,"",0);
Style_SetLexer(g_hwndEdit,NULL);
iEOLMode = iLineEndings[iDefaultEOLMode];
SendMessage(g_hwndEdit,SCI_SETEOLMODE,iLineEndings[iDefaultEOLMode],0);
if (Encoding_Source(CPI_GET) != CPI_NONE) {
fileEncoding = Encoding_Source(CPI_GET);
g_iEOLMode = iLineEndings[g_iDefaultEOLMode];
SendMessage(g_hwndEdit,SCI_SETEOLMODE,iLineEndings[g_iDefaultEOLMode],0);
if (Encoding_SrcCmdLn(CPI_GET) != CPI_NONE) {
fileEncoding = Encoding_SrcCmdLn(CPI_GET);
Encoding_Current(fileEncoding);
Encoding_HasChanged(fileEncoding);
}
else {
Encoding_Current(iDefaultEncoding);
Encoding_HasChanged(iDefaultEncoding);
Encoding_Current(g_iDefaultEncoding);
Encoding_HasChanged(g_iDefaultEncoding);
}
Encoding_SciSetCodePage(g_hwndEdit,Encoding_Current(CPI_GET));
bReadOnly = FALSE;
@ -7532,12 +7530,12 @@ BOOL FileLoad(BOOL bDontSave,BOOL bNew,BOOL bReload,BOOL bNoEncDetect,LPCWSTR lp
if (!bReload && MRU_FindFile(pFileMRU,szFileName,&idx)) {
fileEncoding = pFileMRU->iEncoding[idx];
if (fileEncoding > 0)
Encoding_Source(Encoding_MapUnicode(fileEncoding));
Encoding_SrcCmdLn(Encoding_MapUnicode(fileEncoding));
}
else
fileEncoding = Encoding_Current(CPI_GET);
fSuccess = FileIO(TRUE,szFileName,bNoEncDetect,&fileEncoding,&iEOLMode,&bUnicodeErr,&bFileTooBig,&bUnknownExt,NULL,FALSE);
fSuccess = FileIO(TRUE,szFileName,bNoEncDetect,&fileEncoding,&g_iEOLMode,&bUnicodeErr,&bFileTooBig,&bUnknownExt,NULL,FALSE);
if (fSuccess)
Encoding_Current(fileEncoding); // load may change encoding
}
@ -7552,7 +7550,7 @@ BOOL FileLoad(BOOL bDontSave,BOOL bNew,BOOL bReload,BOOL bNoEncDetect,LPCWSTR lp
if (!flagLexerSpecified) // flag will be cleared
Style_SetLexerFromFile(g_hwndEdit,g_wchCurFile);
SendMessage(g_hwndEdit,SCI_SETEOLMODE,iEOLMode,0);
SendMessage(g_hwndEdit,SCI_SETEOLMODE,g_iEOLMode,0);
fileEncoding = Encoding_Current(CPI_GET);
Encoding_HasChanged(fileEncoding);
int idx, iCaretPos = 0;
@ -7642,6 +7640,7 @@ BOOL FileRevert(LPCWSTR szFileName)
//BOOL bIsTail = (iCurPos == iAnchorPos) && (iCurPos == SendMessage(g_hwndEdit, SCI_GETLENGTH, 0, 0));
BOOL bIsTail = (iCurPos == iAnchorPos) && (iCurrLine >= (SciCall_GetLineCount() - 1));
Encoding_SrcWeak(Encoding_Current(CPI_GET));
WCHAR tchFileName2[MAX_PATH] = { L'\0' };
@ -7759,7 +7758,7 @@ BOOL FileSave(BOOL bSaveAlways,BOOL bAsk,BOOL bSaveAs,BOOL bSaveCopy)
if (SaveFileDlg(g_hwndMain,tchFile,COUNTOF(tchFile),tchInitialDir))
{
int fileEncoding = Encoding_Current(CPI_GET);
fSuccess = FileIO(FALSE, tchFile, FALSE, &fileEncoding, &iEOLMode, NULL, NULL, NULL, &bCancelDataLoss, bSaveCopy);
fSuccess = FileIO(FALSE, tchFile, FALSE, &fileEncoding, &g_iEOLMode, NULL, NULL, NULL, &bCancelDataLoss, bSaveCopy);
//~if (fSuccess) Encoding_Current(fileEncoding); // save should not change encoding
if (fSuccess)
{
@ -7786,7 +7785,7 @@ BOOL FileSave(BOOL bSaveAlways,BOOL bAsk,BOOL bSaveAs,BOOL bSaveCopy)
}
else {
int fileEncoding = Encoding_Current(CPI_GET);
fSuccess = FileIO(FALSE,g_wchCurFile,FALSE,&fileEncoding,&iEOLMode,NULL,NULL,NULL,&bCancelDataLoss,FALSE);
fSuccess = FileIO(FALSE,g_wchCurFile,FALSE,&fileEncoding,&g_iEOLMode,NULL,NULL,NULL,&bCancelDataLoss,FALSE);
//~if (fSuccess) Encoding_Current(fileEncoding); // save should not change encoding
}
@ -7825,7 +7824,7 @@ BOOL FileSave(BOOL bSaveAlways,BOOL bAsk,BOOL bSaveAs,BOOL bSaveCopy)
if (GetTempPath(MAX_PATH,lpTempPathBuffer) &&
GetTempFileName(lpTempPathBuffer,TEXT("NP3"),0,szTempFileName)) {
int fileEncoding = Encoding_Current(CPI_GET);
if (FileIO(FALSE,szTempFileName,FALSE,&fileEncoding,&iEOLMode,NULL,NULL,NULL,&bCancelDataLoss,TRUE)) {
if (FileIO(FALSE,szTempFileName,FALSE,&fileEncoding,&g_iEOLMode,NULL,NULL,NULL,&bCancelDataLoss,TRUE)) {
//~Encoding_Current(fileEncoding); // save should not change encoding
WCHAR szArguments[2048] = { L'\0' };
LPWSTR lpCmdLine = GetCommandLine();

View File

@ -2987,7 +2987,7 @@ static int g_cxStyleSelectDlg;
static int g_cyStyleSelectDlg;
extern int iDefaultCharSet;
extern int g_iDefaultCharSet;
extern BOOL bHiliteCurrentLine;
extern BOOL bHyperlinkHotspot;
@ -5112,9 +5112,9 @@ BOOL Style_SelectFont(HWND hwnd,LPWSTR lpszStyle,int cchStyle, LPCWSTR sLexerNam
}
}
int iCharSet = iDefaultCharSet;
int iCharSet = g_iDefaultCharSet;
if (!Style_StrGetCharSet(lpszStyle, &iCharSet)) {
iCharSet = iDefaultCharSet;
iCharSet = g_iDefaultCharSet;
}
// is "size:" definition relative ?
@ -5261,7 +5261,7 @@ BOOL Style_SelectFont(HWND hwnd,LPWSTR lpszStyle,int cchStyle, LPCWSTR sLexerNam
if (bGlobalDefaultStyle &&
(lf.lfCharSet != DEFAULT_CHARSET) &&
(lf.lfCharSet != ANSI_CHARSET) &&
(lf.lfCharSet != iDefaultCharSet)) {
(lf.lfCharSet != g_iDefaultCharSet)) {
if (lf.lfCharSet == iCharSet) {
if (StrStrI(lpszStyle, L"charset:"))
{