mirror of
https://github.com/rizonesoft/Notepad3.git
synced 2026-06-28 21:02:59 +08:00
Merge pull request #5619 from RaiKoHoff/Dev_Master
fix: default encoding (forced fallback)
This commit is contained in:
commit
e3fe30cca4
@ -3,6 +3,7 @@
|
||||
;Notepad3.ini=%APPDATA%\Rizonesoft\Notepad3\Notepad3.ini
|
||||
[Settings]
|
||||
SettingsVersion=5
|
||||
;AnalyzeReliableConfidenceLevel=50
|
||||
[Settings2]
|
||||
;IMEInteraction=0
|
||||
;DateTimeFormat= ;(-> <Locale dependent short format>)
|
||||
@ -58,7 +59,6 @@ SettingsVersion=5
|
||||
;UndoTransactionTimeout=0 ;in [msec]
|
||||
;AdministrationTool.exe=
|
||||
;DevDebugMode=0
|
||||
;AnalyzeReliableConfidenceLevel=66
|
||||
;LocaleAnsiCodePageAnalysisBonus=33
|
||||
;UchardetLanguageFilter=31
|
||||
; Bitmask controlling which CJK charset probers are active in uchardet:
|
||||
|
||||
@ -28,6 +28,10 @@ These settings are managed through Notepad3's user interface (Menu → Settings)
|
||||
|
||||
#### `Favorites=%APPDATA%\Rizonesoft\Notepad3\Favorites\`
|
||||
|
||||
#### `AnalyzeReliableConfidenceLevel=50`
|
||||
|
||||
Confidence threshold (0–100) for the encoding analysis reliability indicator. Configurable in Menu → Settings → Encoding Defaults, next to "Perform ANSI Code Page analysis".
|
||||
|
||||
---
|
||||
|
||||
## `[Settings2]`
|
||||
@ -361,10 +365,6 @@ Reserved for future use.
|
||||
|
||||
Show encoding detector (UCHARDET) info in the title bar for debugging.
|
||||
|
||||
#### `AnalyzeReliableConfidenceLevel=66`
|
||||
|
||||
Confidence threshold for the encoding reliability indicator.
|
||||
|
||||
#### `LocaleAnsiCodePageAnalysisBonus=33`
|
||||
|
||||
Bias added to confidence when the system's ANSI code page matches the detected encoding.
|
||||
|
||||
@ -472,6 +472,8 @@
|
||||
#define IDC_FILE_CHECK_INTERVAL 18135
|
||||
#define IDC_DARK_MODE_CONTRAST 18136
|
||||
#define IDC_TAB_BACKTAB_INDENTS_ALWAYS 18137
|
||||
#define IDC_ANSI_CONFIDENCE_LEVEL 18138
|
||||
#define IDC_ANSI_CONFIDENCE_SPIN 18139
|
||||
|
||||
#define IDC_RADIO_BTN_A 18200
|
||||
#define IDC_RADIO_BTN_B 18201
|
||||
|
||||
@ -198,6 +198,8 @@ BEGIN
|
||||
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,106,155,10
|
||||
CONTROL "Voer &ANSI-kodebladanalise uit",IDC_NOANSICPDETECTION,
|
||||
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,118,155,10
|
||||
EDITTEXT IDC_ANSI_CONFIDENCE_LEVEL,140,117,28,12,ES_AUTOHSCROLL | ES_NUMBER
|
||||
CONTROL "",IDC_ANSI_CONFIDENCE_SPIN,"msctls_updown32",UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_HOTTRACK,156,116,11,14
|
||||
CONTROL "Aktiveer opsporing van &UNICODE",IDC_NOUNICODEDETECTION,
|
||||
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,130,155,10
|
||||
DEFPUSHBUTTON "OK",IDOK,87,151,50,14
|
||||
|
||||
@ -198,6 +198,8 @@ BEGIN
|
||||
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,106,114,10
|
||||
CONTROL "Вызначаць кодавую старонку &ANSI",IDC_NOANSICPDETECTION,
|
||||
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,118,137,10
|
||||
EDITTEXT IDC_ANSI_CONFIDENCE_LEVEL,140,117,28,12,ES_AUTOHSCROLL | ES_NUMBER
|
||||
CONTROL "",IDC_ANSI_CONFIDENCE_SPIN,"msctls_updown32",UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_HOTTRACK,156,116,11,14
|
||||
CONTROL "Уключыць вызначэнне &UNICODE",IDC_NOUNICODEDETECTION,
|
||||
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,130,127,10
|
||||
DEFPUSHBUTTON "OK",IDOK,101,151,50,14
|
||||
|
||||
@ -198,6 +198,8 @@ BEGIN
|
||||
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,106,165,10
|
||||
CONTROL "Führe &ANSI Code-Page Analyse durch",IDC_NOANSICPDETECTION,
|
||||
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,118,165,10
|
||||
EDITTEXT IDC_ANSI_CONFIDENCE_LEVEL,140,117,28,12,ES_AUTOHSCROLL | ES_NUMBER
|
||||
CONTROL "",IDC_ANSI_CONFIDENCE_SPIN,"msctls_updown32",UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_HOTTRACK,156,116,11,14
|
||||
CONTROL "Erlaube &UNICODE Erkennung",IDC_NOUNICODEDETECTION,
|
||||
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,130,122,10
|
||||
DEFPUSHBUTTON "OK",IDOK,95,151,50,14
|
||||
|
||||
@ -198,6 +198,8 @@ BEGIN
|
||||
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,106,160,10
|
||||
CONTROL "Εκτέλεση ανάλυσης κωδικοσελίδας A&ΝSI",IDC_NOANSICPDETECTION,
|
||||
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,118,150,10
|
||||
EDITTEXT IDC_ANSI_CONFIDENCE_LEVEL,140,117,28,12,ES_AUTOHSCROLL | ES_NUMBER
|
||||
CONTROL "",IDC_ANSI_CONFIDENCE_SPIN,"msctls_updown32",UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_HOTTRACK,156,116,11,14
|
||||
CONTROL "Ενεργοποίηση εντοπισμού UN&ΙCODE",IDC_NOUNICODEDETECTION,
|
||||
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,130,138,10
|
||||
DEFPUSHBUTTON "&Εντάξει",IDOK,102,151,50,14
|
||||
|
||||
@ -198,6 +198,8 @@ BEGIN
|
||||
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,106,126,10
|
||||
CONTROL "Perform &ANSI Code Page analysis",IDC_NOANSICPDETECTION,
|
||||
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,118,122,10
|
||||
EDITTEXT IDC_ANSI_CONFIDENCE_LEVEL,140,117,28,12,ES_AUTOHSCROLL | ES_NUMBER
|
||||
CONTROL "",IDC_ANSI_CONFIDENCE_SPIN,"msctls_updown32",UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_HOTTRACK,156,116,11,14
|
||||
CONTROL "Enable &UNICODE detection",IDC_NOUNICODEDETECTION,
|
||||
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,130,122,10
|
||||
DEFPUSHBUTTON "OK",IDOK,87,151,50,14
|
||||
|
||||
@ -198,6 +198,8 @@ BEGIN
|
||||
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,106,126,10
|
||||
CONTROL "Perform &ANSI Code Page analysis",IDC_NOANSICPDETECTION,
|
||||
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,118,122,10
|
||||
EDITTEXT IDC_ANSI_CONFIDENCE_LEVEL,140,117,28,12,ES_AUTOHSCROLL | ES_NUMBER
|
||||
CONTROL "",IDC_ANSI_CONFIDENCE_SPIN,"msctls_updown32",UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_HOTTRACK,156,116,11,14
|
||||
CONTROL "Enable &UNICODE detection",IDC_NOUNICODEDETECTION,
|
||||
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,130,122,10
|
||||
DEFPUSHBUTTON "OK",IDOK,87,151,50,14
|
||||
|
||||
@ -198,6 +198,8 @@ BEGIN
|
||||
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,106,180,10
|
||||
CONTROL "Realizar el análisis de la página de códigos ANSI",IDC_NOANSICPDETECTION,
|
||||
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,118,180,10
|
||||
EDITTEXT IDC_ANSI_CONFIDENCE_LEVEL,140,117,28,12,ES_AUTOHSCROLL | ES_NUMBER
|
||||
CONTROL "",IDC_ANSI_CONFIDENCE_SPIN,"msctls_updown32",UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_HOTTRACK,156,116,11,14
|
||||
CONTROL "Habilitar la detección &UNICODE",IDC_NOUNICODEDETECTION,
|
||||
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,130,122,10
|
||||
DEFPUSHBUTTON "Aceptar",IDOK,87,151,50,14
|
||||
|
||||
@ -198,6 +198,8 @@ BEGIN
|
||||
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,106,126,10
|
||||
CONTROL "Suorita &ANSI-koodisivuanalyysi",IDC_NOANSICPDETECTION,
|
||||
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,118,122,10
|
||||
EDITTEXT IDC_ANSI_CONFIDENCE_LEVEL,140,117,28,12,ES_AUTOHSCROLL | ES_NUMBER
|
||||
CONTROL "",IDC_ANSI_CONFIDENCE_SPIN,"msctls_updown32",UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_HOTTRACK,156,116,11,14
|
||||
CONTROL "Ota &UNICODE-tunnistus käyttöön",IDC_NOUNICODEDETECTION,
|
||||
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,130,122,10
|
||||
DEFPUSHBUTTON "OK",IDOK,92,151,50,14
|
||||
|
||||
@ -198,6 +198,8 @@ BEGIN
|
||||
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,106,168,10
|
||||
CONTROL "Effectuer une analyse de code page &ANSI",IDC_NOANSICPDETECTION,
|
||||
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,118,155,10
|
||||
EDITTEXT IDC_ANSI_CONFIDENCE_LEVEL,140,117,28,12,ES_AUTOHSCROLL | ES_NUMBER
|
||||
CONTROL "",IDC_ANSI_CONFIDENCE_SPIN,"msctls_updown32",UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_HOTTRACK,156,116,11,14
|
||||
CONTROL "Activer la détection &UNICODE",IDC_NOUNICODEDETECTION,
|
||||
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,130,122,10
|
||||
DEFPUSHBUTTON "OK",IDOK,87,151,50,14
|
||||
|
||||
@ -198,6 +198,8 @@ BEGIN
|
||||
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,106,126,10
|
||||
CONTROL "ANSI कोड पेज का विश्लेषण करें (&A)",IDC_NOANSICPDETECTION,
|
||||
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,118,122,10
|
||||
EDITTEXT IDC_ANSI_CONFIDENCE_LEVEL,140,117,28,12,ES_AUTOHSCROLL | ES_NUMBER
|
||||
CONTROL "",IDC_ANSI_CONFIDENCE_SPIN,"msctls_updown32",UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_HOTTRACK,156,116,11,14
|
||||
CONTROL "युनिकोड पहचान सक्षम करें (&U)",IDC_NOUNICODEDETECTION,
|
||||
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,130,122,10
|
||||
DEFPUSHBUTTON "सही है",IDOK,87,151,50,14
|
||||
|
||||
@ -198,6 +198,8 @@ BEGIN
|
||||
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,106,155,10
|
||||
CONTROL "&ANSI kódlap elemzés végrehajtása",IDC_NOANSICPDETECTION,
|
||||
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,118,132,10
|
||||
EDITTEXT IDC_ANSI_CONFIDENCE_LEVEL,140,117,28,12,ES_AUTOHSCROLL | ES_NUMBER
|
||||
CONTROL "",IDC_ANSI_CONFIDENCE_SPIN,"msctls_updown32",UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_HOTTRACK,156,116,11,14
|
||||
CONTROL "&UNICODE detektálás engedélyezése",IDC_NOUNICODEDETECTION,
|
||||
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,130,132,10
|
||||
DEFPUSHBUTTON "OK",IDOK,100,151,50,14
|
||||
|
||||
@ -198,6 +198,8 @@ BEGIN
|
||||
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,106,126,10
|
||||
CONTROL "Lakukan analisis Halaman Kode &ANSI",IDC_NOANSICPDETECTION,
|
||||
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,118,140,10
|
||||
EDITTEXT IDC_ANSI_CONFIDENCE_LEVEL,140,117,28,12,ES_AUTOHSCROLL | ES_NUMBER
|
||||
CONTROL "",IDC_ANSI_CONFIDENCE_SPIN,"msctls_updown32",UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_HOTTRACK,156,116,11,14
|
||||
CONTROL "Aktifkan deteksi &UNICODE",IDC_NOUNICODEDETECTION,
|
||||
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,130,122,10
|
||||
DEFPUSHBUTTON "OK",IDOK,87,151,50,14
|
||||
|
||||
@ -198,6 +198,8 @@ BEGIN
|
||||
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,106,155,10
|
||||
CONTROL "Esegui l'analisi delle pagine di codice &ANSI",IDC_NOANSICPDETECTION,
|
||||
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,118,165,10
|
||||
EDITTEXT IDC_ANSI_CONFIDENCE_LEVEL,140,117,28,12,ES_AUTOHSCROLL | ES_NUMBER
|
||||
CONTROL "",IDC_ANSI_CONFIDENCE_SPIN,"msctls_updown32",UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_HOTTRACK,156,116,11,14
|
||||
CONTROL "Attiva rilevamento &Unicode",IDC_NOUNICODEDETECTION,
|
||||
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,130,122,10
|
||||
DEFPUSHBUTTON "OK",IDOK,97,151,50,14
|
||||
|
||||
@ -198,6 +198,8 @@ BEGIN
|
||||
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,106,153,10
|
||||
CONTROL "ANSI を判別(&A)",IDC_NOANSICPDETECTION,
|
||||
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,118,122,10
|
||||
EDITTEXT IDC_ANSI_CONFIDENCE_LEVEL,140,117,28,12,ES_AUTOHSCROLL | ES_NUMBER
|
||||
CONTROL "",IDC_ANSI_CONFIDENCE_SPIN,"msctls_updown32",UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_HOTTRACK,156,116,11,14
|
||||
CONTROL "Unicode を判別(&U)",IDC_NOUNICODEDETECTION,
|
||||
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,130,122,10
|
||||
DEFPUSHBUTTON "OK",IDOK,87,151,50,14
|
||||
|
||||
@ -198,6 +198,8 @@ BEGIN
|
||||
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,106,164,10
|
||||
CONTROL "ANSI 코드 페이지 분석 수행(&A)",IDC_NOANSICPDETECTION,
|
||||
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,118,164,10
|
||||
EDITTEXT IDC_ANSI_CONFIDENCE_LEVEL,140,117,28,12,ES_AUTOHSCROLL | ES_NUMBER
|
||||
CONTROL "",IDC_ANSI_CONFIDENCE_SPIN,"msctls_updown32",UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_HOTTRACK,156,116,11,14
|
||||
CONTROL "UNICODE 감지 사용(&U)",IDC_NOUNICODEDETECTION,
|
||||
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,130,164,10
|
||||
DEFPUSHBUTTON "확인",IDOK,87,151,50,14
|
||||
|
||||
@ -198,6 +198,8 @@ BEGIN
|
||||
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,106,140,10
|
||||
CONTROL "Analyse van &ANSI-codepagina uitvoeren",IDC_NOANSICPDETECTION,
|
||||
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,118,145,10
|
||||
EDITTEXT IDC_ANSI_CONFIDENCE_LEVEL,140,117,28,12,ES_AUTOHSCROLL | ES_NUMBER
|
||||
CONTROL "",IDC_ANSI_CONFIDENCE_SPIN,"msctls_updown32",UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_HOTTRACK,156,116,11,14
|
||||
CONTROL "&UNICODE-detectie inschakelen",IDC_NOUNICODEDETECTION,
|
||||
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,130,122,10
|
||||
DEFPUSHBUTTON "OK",IDOK,98,151,50,14
|
||||
|
||||
@ -198,6 +198,8 @@ BEGIN
|
||||
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,106,126,10
|
||||
CONTROL "Wykonaj analizę strony kodowej &ANSI",IDC_NOANSICPDETECTION,
|
||||
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,118,140,10
|
||||
EDITTEXT IDC_ANSI_CONFIDENCE_LEVEL,140,117,28,12,ES_AUTOHSCROLL | ES_NUMBER
|
||||
CONTROL "",IDC_ANSI_CONFIDENCE_SPIN,"msctls_updown32",UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_HOTTRACK,156,116,11,14
|
||||
CONTROL "Włącz wykrywanie &UNICODE",IDC_NOUNICODEDETECTION,
|
||||
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,130,122,10
|
||||
DEFPUSHBUTTON "OK",IDOK,87,151,50,14
|
||||
|
||||
@ -198,6 +198,8 @@ BEGIN
|
||||
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,106,130,10
|
||||
CONTROL "Executar análise de Página de Código &ANSI",IDC_NOANSICPDETECTION,
|
||||
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,118,160,10
|
||||
EDITTEXT IDC_ANSI_CONFIDENCE_LEVEL,140,117,28,12,ES_AUTOHSCROLL | ES_NUMBER
|
||||
CONTROL "",IDC_ANSI_CONFIDENCE_SPIN,"msctls_updown32",UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_HOTTRACK,156,116,11,14
|
||||
CONTROL "Habilitar detecção de &UNICODE",IDC_NOUNICODEDETECTION,
|
||||
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,130,130,10
|
||||
DEFPUSHBUTTON "OK",IDOK,87,151,50,14
|
||||
|
||||
@ -198,6 +198,8 @@ BEGIN
|
||||
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,106,165,10
|
||||
CONTROL "Efectuar análise de página de código &ANSI",IDC_NOANSICPDETECTION,
|
||||
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,118,160,10
|
||||
EDITTEXT IDC_ANSI_CONFIDENCE_LEVEL,140,117,28,12,ES_AUTOHSCROLL | ES_NUMBER
|
||||
CONTROL "",IDC_ANSI_CONFIDENCE_SPIN,"msctls_updown32",UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_HOTTRACK,156,116,11,14
|
||||
CONTROL "Activar detecção &UNICODE",IDC_NOUNICODEDETECTION,
|
||||
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,130,122,10
|
||||
DEFPUSHBUTTON "OK",IDOK,87,151,50,14
|
||||
|
||||
@ -198,6 +198,8 @@ BEGIN
|
||||
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,106,123,10
|
||||
CONTROL "Определять кодовую страницу &ANSI",IDC_NOANSICPDETECTION,
|
||||
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,118,142,10
|
||||
EDITTEXT IDC_ANSI_CONFIDENCE_LEVEL,140,117,28,12,ES_AUTOHSCROLL | ES_NUMBER
|
||||
CONTROL "",IDC_ANSI_CONFIDENCE_SPIN,"msctls_updown32",UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_HOTTRACK,156,116,11,14
|
||||
CONTROL "Включить определение &UNICODE",IDC_NOUNICODEDETECTION,
|
||||
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,130,129,10
|
||||
DEFPUSHBUTTON "OK",IDOK,101,151,50,14
|
||||
|
||||
@ -198,6 +198,8 @@ BEGIN
|
||||
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,106,135,10
|
||||
CONTROL "A&nalyzovať ANSI kódovanej stránky",IDC_NOANSICPDETECTION,
|
||||
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,118,130,10
|
||||
EDITTEXT IDC_ANSI_CONFIDENCE_LEVEL,140,117,28,12,ES_AUTOHSCROLL | ES_NUMBER
|
||||
CONTROL "",IDC_ANSI_CONFIDENCE_SPIN,"msctls_updown32",UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_HOTTRACK,156,116,11,14
|
||||
CONTROL "Povoliť &UNICODE detekciu",IDC_NOUNICODEDETECTION,
|
||||
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,130,122,10
|
||||
DEFPUSHBUTTON "OK",IDOK,87,151,50,14
|
||||
|
||||
@ -198,6 +198,8 @@ BEGIN
|
||||
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,106,126,10
|
||||
CONTROL "Gör analys av ANSI-kodsida",IDC_NOANSICPDETECTION,
|
||||
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,118,122,10
|
||||
EDITTEXT IDC_ANSI_CONFIDENCE_LEVEL,140,117,28,12,ES_AUTOHSCROLL | ES_NUMBER
|
||||
CONTROL "",IDC_ANSI_CONFIDENCE_SPIN,"msctls_updown32",UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_HOTTRACK,156,116,11,14
|
||||
CONTROL "Aktiviera UNICODE-identifiering",IDC_NOUNICODEDETECTION,
|
||||
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,130,122,10
|
||||
DEFPUSHBUTTON "OK",IDOK,87,151,50,14
|
||||
|
||||
@ -198,6 +198,8 @@ BEGIN
|
||||
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,106,130,10
|
||||
CONTROL "&ANSI kod sayfası incelensin",IDC_NOANSICPDETECTION,
|
||||
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,118,122,10
|
||||
EDITTEXT IDC_ANSI_CONFIDENCE_LEVEL,140,117,28,12,ES_AUTOHSCROLL | ES_NUMBER
|
||||
CONTROL "",IDC_ANSI_CONFIDENCE_SPIN,"msctls_updown32",UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_HOTTRACK,156,116,11,14
|
||||
CONTROL "&UNICODE algılaması yapılsın",IDC_NOUNICODEDETECTION,
|
||||
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,130,122,10
|
||||
DEFPUSHBUTTON "Tamam",IDOK,87,151,50,14
|
||||
|
||||
@ -198,6 +198,8 @@ BEGIN
|
||||
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,106,164,10
|
||||
CONTROL "Thực hiện phân tích mã hóa ANSI(&A)",IDC_NOANSICPDETECTION,
|
||||
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,118,164,10
|
||||
EDITTEXT IDC_ANSI_CONFIDENCE_LEVEL,140,117,28,12,ES_AUTOHSCROLL | ES_NUMBER
|
||||
CONTROL "",IDC_ANSI_CONFIDENCE_SPIN,"msctls_updown32",UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_HOTTRACK,156,116,11,14
|
||||
CONTROL "Sử dụng phát hiện UNICODE(&U)",IDC_NOUNICODEDETECTION,
|
||||
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,130,164,10
|
||||
DEFPUSHBUTTON "Đồng ý",IDOK,87,151,50,14
|
||||
|
||||
@ -198,6 +198,8 @@ BEGIN
|
||||
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,106,166,10
|
||||
CONTROL "分析 ANSI 代码页(&A)",IDC_NOANSICPDETECTION,
|
||||
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,118,166,10
|
||||
EDITTEXT IDC_ANSI_CONFIDENCE_LEVEL,140,117,28,12,ES_AUTOHSCROLL | ES_NUMBER
|
||||
CONTROL "",IDC_ANSI_CONFIDENCE_SPIN,"msctls_updown32",UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_HOTTRACK,156,116,11,14
|
||||
CONTROL "检测 Unicode(&U)",IDC_NOUNICODEDETECTION,
|
||||
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,130,166,10
|
||||
DEFPUSHBUTTON "确定",IDOK,87,151,50,14
|
||||
|
||||
@ -198,6 +198,8 @@ BEGIN
|
||||
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,106,126,10
|
||||
CONTROL "分析 ANSI 內碼表(&A)",IDC_NOANSICPDETECTION,
|
||||
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,118,122,10
|
||||
EDITTEXT IDC_ANSI_CONFIDENCE_LEVEL,140,117,28,12,ES_AUTOHSCROLL | ES_NUMBER
|
||||
CONTROL "",IDC_ANSI_CONFIDENCE_SPIN,"msctls_updown32",UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_HOTTRACK,156,116,11,14
|
||||
CONTROL "檢測 Unicode(&U)",IDC_NOUNICODEDETECTION,
|
||||
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,130,122,10
|
||||
DEFPUSHBUTTON "確定",IDOK,87,151,50,14
|
||||
|
||||
@ -349,7 +349,7 @@ extern "C" bool SaveIniFileCache(const HPATHL hpthIniFile)
|
||||
}
|
||||
|
||||
|
||||
//=============================================================================
|
||||
// =============================================================================
|
||||
//
|
||||
// OpenSettingsFile()
|
||||
//
|
||||
@ -393,7 +393,7 @@ extern "C" bool OpenSettingsFile(LPCSTR fctname)
|
||||
}
|
||||
|
||||
|
||||
//=============================================================================
|
||||
// =============================================================================
|
||||
//
|
||||
// CloseSettingsFile()
|
||||
//
|
||||
@ -438,11 +438,11 @@ extern "C" bool CloseSettingsFile(LPCSTR fctname, bool bSaveSettings)
|
||||
|
||||
|
||||
|
||||
//=============================================================================
|
||||
// =============================================================================
|
||||
//
|
||||
// Manipulation of (cached) ini file
|
||||
//
|
||||
//=============================================================================
|
||||
// =============================================================================
|
||||
|
||||
|
||||
extern "C" size_t IniSectionGetString(LPCWSTR lpSectionName, LPCWSTR lpKeyName, LPCWSTR lpDefault,
|
||||
@ -840,7 +840,7 @@ extern "C" bool IniFileIterateSection(const HPATHL hpthIniFile, LPCWSTR lpSectio
|
||||
|
||||
|
||||
|
||||
//=============================================================================
|
||||
// =============================================================================
|
||||
//
|
||||
// AddFilePathToRecentDocs()
|
||||
//
|
||||
@ -876,7 +876,7 @@ extern "C" void AddFilePathToRecentDocs(const HPATHL hpthFile)
|
||||
|
||||
|
||||
#if 0
|
||||
//=============================================================================
|
||||
// =============================================================================
|
||||
//
|
||||
// ClearDestinationsOnRecentDocs()
|
||||
//
|
||||
@ -899,7 +899,7 @@ extern "C" void ClearDestinationsOnRecentDocs()
|
||||
#endif
|
||||
|
||||
|
||||
//=============================================================================
|
||||
// =============================================================================
|
||||
//
|
||||
// _CheckAndSetIniFile()
|
||||
//
|
||||
@ -1000,11 +1000,15 @@ static bool _HandleIniFileRedirect(LPCWSTR lpszSecName, LPCWSTR lpszKeyName, HPA
|
||||
}
|
||||
|
||||
// pick up DefaultDirectory from each redirecting INI (later files override earlier ones)
|
||||
WCHAR defDir[PATHLONG_MAX_CCH] = { L'\0' };
|
||||
if (IniFileGetString(hpth_in_out, Constants.Settings2_Section, L"DefaultDirectory", L"", defDir, COUNTOF(defDir))) {
|
||||
Path_Reset(Settings2.DefaultDirectory, defDir);
|
||||
HPATHL hdefDir = Path_Allocate(NULL);
|
||||
LPWSTR const defDirBuf = Path_WriteAccessBuf(hdefDir, PATHLONG_MAX_CCH);
|
||||
if (IniFileGetString(hpth_in_out, Constants.Settings2_Section, L"DefaultDirectory", L"", defDirBuf, PATHLONG_MAX_CCH)) {
|
||||
Path_Sanitize(hdefDir);
|
||||
Path_FreeExtra(hdefDir, 0);
|
||||
Path_Reset(Settings2.DefaultDirectory, Path_Get(hdefDir));
|
||||
Path_ExpandEnvStrings(Settings2.DefaultDirectory);
|
||||
}
|
||||
Path_Release(hdefDir);
|
||||
|
||||
HPATHL hredirect = Path_Allocate(NULL);
|
||||
LPWSTR const buf = Path_WriteAccessBuf(hredirect, PATHLONG_MAX_CCH);
|
||||
@ -1040,7 +1044,7 @@ static bool _HandleIniFileRedirect(LPCWSTR lpszSecName, LPCWSTR lpszKeyName, HPA
|
||||
}
|
||||
return result;
|
||||
}
|
||||
// ============================================================================
|
||||
// =============================================================================
|
||||
|
||||
|
||||
extern "C" bool FindIniFile()
|
||||
@ -1087,7 +1091,7 @@ extern "C" bool FindIniFile()
|
||||
|
||||
return bFound;
|
||||
}
|
||||
//=============================================================================
|
||||
// =============================================================================
|
||||
|
||||
|
||||
extern "C" bool TestIniFile()
|
||||
@ -1108,7 +1112,7 @@ extern "C" bool TestIniFile()
|
||||
|
||||
return true;
|
||||
}
|
||||
//=============================================================================
|
||||
// =============================================================================
|
||||
|
||||
|
||||
extern "C" bool CreateIniFile(const HPATHL hini_pth, DWORD* pdwFileSize_out)
|
||||
@ -1174,10 +1178,10 @@ extern "C" bool CreateIniFile(const HPATHL hini_pth, DWORD* pdwFileSize_out)
|
||||
}
|
||||
return false;
|
||||
}
|
||||
//=============================================================================
|
||||
// =============================================================================
|
||||
|
||||
|
||||
//=============================================================================
|
||||
// =============================================================================
|
||||
//
|
||||
// LoadSettings()
|
||||
//
|
||||
@ -1374,8 +1378,6 @@ void LoadSettings()
|
||||
|
||||
Settings2.SubWrappedLineSelectOnMarginClick = IniSectionGetBool(IniSecSettings2, L"SubWrappedLineSelectOnMarginClick", false);
|
||||
|
||||
Settings2.AnalyzeReliableConfidenceLevel = (float)clampi(IniSectionGetInt(IniSecSettings2, L"AnalyzeReliableConfidenceLevel", 66), 0, 100) / 100.0f;
|
||||
|
||||
int const iAnsiCPBonusSet = clampi(IniSectionGetInt(IniSecSettings2, L"LocaleAnsiCodePageAnalysisBonus", 33), 0, 100);
|
||||
Settings2.LocaleAnsiCodePageAnalysisBonus = (float)iAnsiCPBonusSet / 100.0f;
|
||||
|
||||
@ -1725,6 +1727,14 @@ void LoadSettings()
|
||||
GET_BOOL_VALUE_FROM_INISECTION(NoEncodingTags, true);
|
||||
GET_BOOL_VALUE_FROM_INISECTION(SkipUnicodeDetection, false);
|
||||
GET_BOOL_VALUE_FROM_INISECTION(SkipANSICodePageDetection, false);
|
||||
GET_INT_VALUE_FROM_INISECTION(AnalyzeReliableConfidenceLevel, 50, 0, 100);
|
||||
constexpr const WCHAR* const arcl_s2 = L"AnalyzeReliableConfidenceLevel";
|
||||
int const deprecatedARCL = IniSectionGetInt(IniSecSettings2, arcl_s2, -1);
|
||||
if (deprecatedARCL >= 0) {
|
||||
Settings.AnalyzeReliableConfidenceLevel = clampi(deprecatedARCL, 0, 100);
|
||||
IniSectionDelete(IniSecSettings2, arcl_s2, true);
|
||||
bDirtyFlag = true;
|
||||
}
|
||||
GET_INT_VALUE_FROM_INISECTION(DefaultEOLMode, SC_EOL_CRLF, SC_EOL_CRLF, SC_EOL_LF);
|
||||
GET_BOOL_VALUE_FROM_INISECTION(WarnInconsistEOLs, true);
|
||||
GET_BOOL_VALUE_FROM_INISECTION(FixLineEndings, false);
|
||||
@ -1973,11 +1983,11 @@ void LoadSettings()
|
||||
|
||||
FreeMem(pPathBuffer);
|
||||
}
|
||||
//=============================================================================
|
||||
// =============================================================================
|
||||
|
||||
|
||||
|
||||
//=============================================================================
|
||||
// =============================================================================
|
||||
//
|
||||
// _SaveSettings()
|
||||
//
|
||||
@ -2163,6 +2173,7 @@ static bool _SaveSettings(bool bForceSaveSettings)
|
||||
SAVE_VALUE_IF_NOT_EQ_DEFAULT(Bool, NoEncodingTags);
|
||||
SAVE_VALUE_IF_NOT_EQ_DEFAULT(Bool, SkipUnicodeDetection);
|
||||
SAVE_VALUE_IF_NOT_EQ_DEFAULT(Bool, SkipANSICodePageDetection);
|
||||
SAVE_VALUE_IF_NOT_EQ_DEFAULT(Int, AnalyzeReliableConfidenceLevel);
|
||||
SAVE_VALUE_IF_NOT_EQ_DEFAULT(Int, DefaultEOLMode);
|
||||
SAVE_VALUE_IF_NOT_EQ_DEFAULT(Bool, WarnInconsistEOLs);
|
||||
SAVE_VALUE_IF_NOT_EQ_DEFAULT(Bool, FixLineEndings);
|
||||
@ -2271,7 +2282,7 @@ static bool _SaveSettings(bool bForceSaveSettings)
|
||||
int const ResX = GetSystemMetrics(SM_CXVIRTUALSCREEN);
|
||||
int const ResY = GetSystemMetrics(SM_CYVIRTUALSCREEN);
|
||||
|
||||
WCHAR tchHighDpiToolBar[64];
|
||||
WCHAR tchHighDpiToolBar[64] = { L'\0' };
|
||||
StringCchPrintf(tchHighDpiToolBar, COUNTOF(tchHighDpiToolBar), L"%ix%i HighDpiToolBar", ResX, ResY);
|
||||
if (Settings.ToolBarTheme != Defaults.ToolBarTheme) {
|
||||
IniSectionSetInt(IniSecWindow, tchHighDpiToolBar, Settings.ToolBarTheme);
|
||||
@ -2307,7 +2318,7 @@ static bool _SaveSettings(bool bForceSaveSettings)
|
||||
}
|
||||
|
||||
|
||||
//=============================================================================
|
||||
// =============================================================================
|
||||
//
|
||||
// SaveWindowPositionSettings()
|
||||
//
|
||||
@ -2357,7 +2368,7 @@ bool SaveWindowPositionSettings(bool bClearSettings)
|
||||
}
|
||||
|
||||
|
||||
//=============================================================================
|
||||
// =============================================================================
|
||||
//
|
||||
// SaveAllSettings()
|
||||
//
|
||||
@ -2427,7 +2438,7 @@ bool SaveAllSettings(bool bForceSaveSettings)
|
||||
|
||||
|
||||
|
||||
//=============================================================================
|
||||
// =============================================================================
|
||||
//
|
||||
// CmdSaveSettingsNow()
|
||||
//
|
||||
@ -2485,11 +2496,11 @@ void CmdSaveSettingsNow()
|
||||
}
|
||||
|
||||
|
||||
//=============================================================================
|
||||
//=============================================================================
|
||||
// =============================================================================
|
||||
// =============================================================================
|
||||
|
||||
|
||||
//=============================================================================
|
||||
// =============================================================================
|
||||
//
|
||||
// MRU functions
|
||||
//
|
||||
@ -2897,7 +2908,7 @@ bool MRU_MergeSave(LPMRULIST pmru, bool bAddFiles, bool bRelativePath, bool bUne
|
||||
// Some C++ Extentions for Notepad3
|
||||
// ////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
//=============================================================================
|
||||
// =============================================================================
|
||||
//
|
||||
// EditSetDocumentBuffer() - Set Document Buffer for Scintilla Edit Component
|
||||
//
|
||||
|
||||
@ -3444,7 +3444,8 @@ static INT_PTR CALLBACK SelectDefEncodingDlgProc(HWND hwnd, UINT umsg, WPARAM wP
|
||||
//~SetExplorerTheme(GetDlgItem(hwnd, IDC_ENCODINGLIST)); ~ OWNERDRAWN -> WM_DRAWITEM
|
||||
//SetExplorerTheme(GetDlgItem(hwnd, IDC_RESIZEGRIP));
|
||||
int const ctl[] = { IDC_ENCODINGLIST, IDC_USEASREADINGFALLBACK, IDC_ASCIIASUTF8, IDC_RELIABLE_DETECTION_RES,
|
||||
IDC_NFOASOEM, IDC_ENCODINGFROMFILEVARS, IDC_NOUNICODEDETECTION, IDC_NOANSICPDETECTION, IDC_STATIC, IDC_STATIC2
|
||||
IDC_NFOASOEM, IDC_ENCODINGFROMFILEVARS, IDC_NOUNICODEDETECTION, IDC_NOANSICPDETECTION,
|
||||
IDC_ANSI_CONFIDENCE_LEVEL, IDC_STATIC, IDC_STATIC2
|
||||
};
|
||||
for (int i = 0; i < COUNTOF(ctl); ++i) {
|
||||
SetWindowTheme(GetDlgItem(hwnd, ctl[i]), L"", L""); // remove theme for BS_AUTORADIOBUTTON
|
||||
@ -3467,9 +3468,9 @@ static INT_PTR CALLBACK SelectDefEncodingDlgProc(HWND hwnd, UINT umsg, WPARAM wP
|
||||
|
||||
Encoding_GetFromComboboxEx(GetDlgItem(hwnd, IDC_ENCODINGLIST), &s_iEnc);
|
||||
s_bLoadASCIIasUTF8 = Settings.LoadASCIIasUTF8;
|
||||
s_bUseAsFallback = Encoding_IsASCII(s_iEnc) ? Settings.UseDefaultForFileEncoding : false;
|
||||
s_bUseAsFallback = Encoding_HasASCII7Bit(s_iEnc) ? Settings.UseDefaultForFileEncoding : false;
|
||||
|
||||
DialogEnableControl(hwnd, IDC_USEASREADINGFALLBACK, Encoding_IsASCII(s_iEnc));
|
||||
DialogEnableControl(hwnd, IDC_USEASREADINGFALLBACK, Encoding_HasASCII7Bit(s_iEnc));
|
||||
CheckDlgButton(hwnd, IDC_USEASREADINGFALLBACK, SetBtn(s_bUseAsFallback));
|
||||
|
||||
CheckDlgButton(hwnd, IDC_ASCIIASUTF8, SetBtn(s_bLoadASCIIasUTF8));
|
||||
@ -3479,6 +3480,12 @@ static INT_PTR CALLBACK SelectDefEncodingDlgProc(HWND hwnd, UINT umsg, WPARAM wP
|
||||
CheckDlgButton(hwnd, IDC_NOUNICODEDETECTION, SetBtn(!Settings.SkipUnicodeDetection));
|
||||
CheckDlgButton(hwnd, IDC_NOANSICPDETECTION, SetBtn(!Settings.SkipANSICodePageDetection));
|
||||
|
||||
SendDlgItemMessage(hwnd, IDC_ANSI_CONFIDENCE_LEVEL, EM_LIMITTEXT, 3, 0);
|
||||
SendDlgItemMessage(hwnd, IDC_ANSI_CONFIDENCE_SPIN, UDM_SETRANGE32, 0, 100);
|
||||
SendDlgItemMessage(hwnd, IDC_ANSI_CONFIDENCE_SPIN, UDM_SETPOS32, 0, Settings.AnalyzeReliableConfidenceLevel);
|
||||
DialogEnableControl(hwnd, IDC_ANSI_CONFIDENCE_LEVEL, !Settings.SkipANSICodePageDetection);
|
||||
DialogEnableControl(hwnd, IDC_ANSI_CONFIDENCE_SPIN, !Settings.SkipANSICodePageDetection);
|
||||
|
||||
CenterDlgInParent(hwnd, false);
|
||||
}
|
||||
return TRUE;
|
||||
@ -3545,10 +3552,10 @@ CASE_WM_CTLCOLOR_SET:
|
||||
case IDC_ASCIIASUTF8: {
|
||||
Encoding_GetFromComboboxEx(GetDlgItem(hwnd, IDC_ENCODINGLIST), &s_iEnc);
|
||||
|
||||
s_bUseAsFallback = Encoding_IsASCII(s_iEnc) ? IsButtonChecked(hwnd, IDC_USEASREADINGFALLBACK) : false;
|
||||
s_bUseAsFallback = Encoding_HasASCII7Bit(s_iEnc) ? IsButtonChecked(hwnd, IDC_USEASREADINGFALLBACK) : false;
|
||||
s_bLoadASCIIasUTF8 = IsButtonChecked(hwnd, IDC_ASCIIASUTF8);
|
||||
|
||||
DialogEnableControl(hwnd, IDC_USEASREADINGFALLBACK, Encoding_IsASCII(s_iEnc));
|
||||
DialogEnableControl(hwnd, IDC_USEASREADINGFALLBACK, Encoding_HasASCII7Bit(s_iEnc));
|
||||
CheckDlgButton(hwnd, IDC_USEASREADINGFALLBACK, SetBtn(s_bUseAsFallback));
|
||||
|
||||
DialogEnableControl(hwnd, IDC_ASCIIASUTF8, true);
|
||||
@ -3570,6 +3577,13 @@ CASE_WM_CTLCOLOR_SET:
|
||||
}
|
||||
break;
|
||||
|
||||
case IDC_NOANSICPDETECTION: {
|
||||
bool const bAnsiCpEnabled = IsButtonChecked(hwnd, IDC_NOANSICPDETECTION);
|
||||
DialogEnableControl(hwnd, IDC_ANSI_CONFIDENCE_LEVEL, bAnsiCpEnabled);
|
||||
DialogEnableControl(hwnd, IDC_ANSI_CONFIDENCE_SPIN, bAnsiCpEnabled);
|
||||
}
|
||||
break;
|
||||
|
||||
case IDOK: {
|
||||
PENCODEDLG pdd = (PENCODEDLG)GetWindowLongPtr(hwnd, DWLP_USER);
|
||||
if (Encoding_GetFromComboboxEx(GetDlgItem(hwnd, IDC_ENCODINGLIST), &pdd->idEncoding)) {
|
||||
@ -3584,6 +3598,7 @@ CASE_WM_CTLCOLOR_SET:
|
||||
Settings.NoEncodingTags = !IsButtonChecked(hwnd, IDC_ENCODINGFROMFILEVARS);
|
||||
Settings.SkipUnicodeDetection = !IsButtonChecked(hwnd, IDC_NOUNICODEDETECTION);
|
||||
Settings.SkipANSICodePageDetection = !IsButtonChecked(hwnd, IDC_NOANSICPDETECTION);
|
||||
Settings.AnalyzeReliableConfidenceLevel = clampi((int)SendDlgItemMessage(hwnd, IDC_ANSI_CONFIDENCE_SPIN, UDM_GETPOS32, 0, 0), 0, 100);
|
||||
EndDialog(hwnd, IDOK);
|
||||
}
|
||||
} else {
|
||||
|
||||
@ -581,7 +581,7 @@ bool EditSetNewEncoding(HWND hwnd, cpi_enc_t iNewEncoding, bool bSupressWarning)
|
||||
} else {
|
||||
|
||||
if (!bSupressWarning) {
|
||||
bool const bIsCurANSI = Encoding_IsANSI(iCurrentEncoding);
|
||||
bool const bIsCurANSI = Encoding_IsSystemANSI_CP(iCurrentEncoding);
|
||||
bool const bIsTargetUTF = Encoding_MaybeUTF8(iNewEncoding) || Encoding_IsUNICODE(iNewEncoding);
|
||||
bSupressWarning = bIsCurANSI && bIsTargetUTF;
|
||||
}
|
||||
@ -1518,7 +1518,7 @@ bool EditLoadFile(
|
||||
status->iEncoding = encDetection.Encoding;
|
||||
|
||||
// UCHARDET was called but returned no result — file is likely binary
|
||||
if (Encoding_IsANSI(status->iEncoding) && encDetection.bIsAnalyzed && Encoding_IsNONE(encDetection.analyzedEncoding)) {
|
||||
if (Encoding_IsEXTERNAL_8BIT(status->iEncoding) && encDetection.bIsAnalyzed && Encoding_IsNONE(encDetection.analyzedEncoding)) {
|
||||
status->bMaybeBinary = true;
|
||||
}
|
||||
|
||||
|
||||
116
src/Encoding.c
116
src/Encoding.c
@ -276,9 +276,9 @@ void Encoding_SetLabel(cpi_enc_t iEncoding)
|
||||
WCHAR wch2[128] = { L'\0' };
|
||||
StringCchCopyN(wch2, COUNTOF(wch2), pwsz, COUNTOF(wch1));
|
||||
|
||||
if (Encoding_IsANSI(iEncoding)) {
|
||||
if (Encoding_IsSystemANSI_CP(iEncoding)) {
|
||||
StringCchCatN(wch2, COUNTOF(wch2), wchANSI, COUNTOF(wchANSI));
|
||||
} else if (Encoding_IsOEM(iEncoding)) {
|
||||
} else if (Encoding_IsSystemOEM(iEncoding)) {
|
||||
StringCchCatN(wch2, COUNTOF(wch2), wchOEM, COUNTOF(wchOEM));
|
||||
}
|
||||
|
||||
@ -394,9 +394,9 @@ void Encoding_AddToListView(HWND hwnd, cpi_enc_t idSel, bool bRecodeOnly)
|
||||
StringCchCopyN(wchBuf, COUNTOF(wchBuf), pEE[i].wch, COUNTOF(wchBuf));
|
||||
}
|
||||
|
||||
if (Encoding_IsANSI(id)) {
|
||||
if (Encoding_IsSystemANSI_CP(id)) {
|
||||
StringCchCatN(wchBuf, COUNTOF(wchBuf), wchANSI, COUNTOF(wchANSI));
|
||||
} else if (Encoding_IsOEM(id)) {
|
||||
} else if (Encoding_IsSystemOEM(id)) {
|
||||
StringCchCatN(wchBuf, COUNTOF(wchBuf), wchOEM, COUNTOF(wchOEM));
|
||||
}
|
||||
|
||||
@ -483,7 +483,7 @@ void Encoding_AddToComboboxEx(HWND hwnd, cpi_enc_t idSel, bool bRecodeOnly)
|
||||
StringCchCopyN(wchBuf, COUNTOF(wchBuf), pEE[i].wch, COUNTOF(wchBuf));
|
||||
}
|
||||
|
||||
if (Encoding_IsANSI(id)) {
|
||||
if (Encoding_IsSystemANSI_CP(id)) {
|
||||
StringCchCatN(wchBuf, COUNTOF(wchBuf), wchANSI, COUNTOF(wchANSI));
|
||||
} else if (id == CPI_OEM) {
|
||||
StringCchCatN(wchBuf, COUNTOF(wchBuf), wchOEM, COUNTOF(wchOEM));
|
||||
@ -530,55 +530,91 @@ UINT Encoding_GetCodePage(const cpi_enc_t iEncoding)
|
||||
{
|
||||
return (iEncoding >= 0) ? g_Encodings[iEncoding].uCodePage : CP_ACP;
|
||||
}
|
||||
// ============================================================================
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
bool Encoding_IsDefault(const cpi_enc_t iEncoding)
|
||||
{
|
||||
return (iEncoding >= 0) ? ((g_Encodings[iEncoding].uFlags & NCP_DEFAULT) != 0) : (iEncoding == CPI_ASCII_7BIT);
|
||||
}
|
||||
// ============================================================================
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
bool Encoding_IsASCII(const cpi_enc_t iEncoding)
|
||||
bool Encoding_HasASCII7Bit(const cpi_enc_t iEncoding)
|
||||
{
|
||||
return (iEncoding >= 0) ? ((g_Encodings[iEncoding].uFlags & NCP_ASCII_7BIT) != 0) : (iEncoding == CPI_ASCII_7BIT);
|
||||
}
|
||||
// ============================================================================
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
bool Encoding_IsANSI(const cpi_enc_t iEncoding)
|
||||
bool Encoding_IsSystemANSI_CP(const cpi_enc_t iEncoding)
|
||||
{
|
||||
return (iEncoding >= 0) ? ((g_Encodings[iEncoding].uFlags & NCP_ANSI) != 0) : (iEncoding == CPI_ASCII_7BIT);
|
||||
}
|
||||
// ============================================================================
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
bool Encoding_IsOEM(const cpi_enc_t iEncoding)
|
||||
bool Encoding_IsSystemOEM(const cpi_enc_t iEncoding)
|
||||
{
|
||||
return (iEncoding >= 0) ? ((g_Encodings[iEncoding].uFlags & NCP_OEM) != 0) : (iEncoding == CPI_ASCII_7BIT);
|
||||
}
|
||||
// ============================================================================
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
bool Encoding_MaybeUTF8(const cpi_enc_t iEncoding)
|
||||
{
|
||||
return (iEncoding >= 0) ? ((g_Encodings[iEncoding].uFlags & NCP_UTF8) != 0) : (iEncoding == CPI_ASCII_7BIT);
|
||||
}
|
||||
// ============================================================================
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
bool Encoding_IsUTF8_SIGN(const cpi_enc_t iEncoding)
|
||||
{
|
||||
return (iEncoding >= 0) ? ((g_Encodings[iEncoding].uFlags & NCP_UTF8_SIGN) != 0) : false;
|
||||
}
|
||||
// ============================================================================
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
bool Encoding_MaybeUTF8_NO_SIGN(const cpi_enc_t iEncoding)
|
||||
{
|
||||
return (Encoding_MaybeUTF8(iEncoding) && !Encoding_IsUTF8_SIGN(iEncoding));
|
||||
}
|
||||
// ============================================================================
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
bool Encoding_IsMBCS(const cpi_enc_t iEncoding)
|
||||
{
|
||||
return (iEncoding >= 0) ? ((g_Encodings[iEncoding].uFlags & NCP_MBCS) != 0) : false;
|
||||
}
|
||||
// ============================================================================
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
bool Encoding_IsUNICODE(const cpi_enc_t iEncoding)
|
||||
{
|
||||
return (iEncoding >= 0) ? ((g_Encodings[iEncoding].uFlags & NCP_UNICODE) != 0) : false;
|
||||
}
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
bool Encoding_IsUNICODE_BOM(const cpi_enc_t iEncoding)
|
||||
{
|
||||
return (iEncoding >= 0) ? ((g_Encodings[iEncoding].uFlags & NCP_UNICODE_BOM) != 0) : false;
|
||||
}
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
bool Encoding_IsUNICODE_REVERSE(const cpi_enc_t iEncoding)
|
||||
{
|
||||
return (iEncoding >= 0) ? ((g_Encodings[iEncoding].uFlags & NCP_UNICODE_REVERSE) != 0) : false;
|
||||
}
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
bool Encoding_IsINTERNAL(const cpi_enc_t iEncoding)
|
||||
{
|
||||
return (iEncoding >= 0) ? ((g_Encodings[iEncoding].uFlags & NCP_INTERNAL) != 0) : false;
|
||||
}
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
bool Encoding_IsEXTERNAL_8BIT(const cpi_enc_t iEncoding)
|
||||
{
|
||||
return (iEncoding >= 0) ? ((g_Encodings[iEncoding].uFlags & NCP_EXTERNAL_8BIT) != 0) : false;
|
||||
}
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
bool Encoding_IsRECODE(const cpi_enc_t iEncoding)
|
||||
{
|
||||
return (iEncoding >= 0) ? ((g_Encodings[iEncoding].uFlags & NCP_RECODE) != 0) : false;
|
||||
}
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
bool Encoding_IsCJK(const cpi_enc_t iEncoding)
|
||||
{
|
||||
@ -609,42 +645,6 @@ bool Encoding_IsCJK(const cpi_enc_t iEncoding)
|
||||
return false;
|
||||
}
|
||||
// ============================================================================
|
||||
|
||||
bool Encoding_IsUNICODE(const cpi_enc_t iEncoding)
|
||||
{
|
||||
return (iEncoding >= 0) ? ((g_Encodings[iEncoding].uFlags & NCP_UNICODE) != 0) : false;
|
||||
}
|
||||
// ============================================================================
|
||||
|
||||
bool Encoding_IsUNICODE_BOM(const cpi_enc_t iEncoding)
|
||||
{
|
||||
return (iEncoding >= 0) ? ((g_Encodings[iEncoding].uFlags & NCP_UNICODE_BOM) != 0) : false;
|
||||
}
|
||||
// ============================================================================
|
||||
|
||||
bool Encoding_IsUNICODE_REVERSE(const cpi_enc_t iEncoding)
|
||||
{
|
||||
return (iEncoding >= 0) ? ((g_Encodings[iEncoding].uFlags & NCP_UNICODE_REVERSE) != 0) : false;
|
||||
}
|
||||
// ============================================================================
|
||||
|
||||
|
||||
bool Encoding_IsINTERNAL(const cpi_enc_t iEncoding)
|
||||
{
|
||||
return (iEncoding >= 0) ? ((g_Encodings[iEncoding].uFlags & NCP_INTERNAL) != 0) : false;
|
||||
}
|
||||
// ============================================================================
|
||||
|
||||
bool Encoding_IsEXTERNAL_8BIT(const cpi_enc_t iEncoding)
|
||||
{
|
||||
return (iEncoding >= 0) ? ((g_Encodings[iEncoding].uFlags & NCP_EXTERNAL_8BIT) != 0) : false;
|
||||
}
|
||||
// ============================================================================
|
||||
|
||||
bool Encoding_IsRECODE(const cpi_enc_t iEncoding)
|
||||
{
|
||||
return (iEncoding >= 0) ? ((g_Encodings[iEncoding].uFlags & NCP_RECODE) != 0) : false;
|
||||
}
|
||||
// ============================================================================
|
||||
|
||||
|
||||
@ -654,21 +654,21 @@ void Encoding_SetDefaultFlag(const cpi_enc_t iEncoding)
|
||||
g_Encodings[iEncoding].uFlags |= NCP_DEFAULT;
|
||||
}
|
||||
}
|
||||
// ============================================================================
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
|
||||
const WCHAR* Encoding_GetLabel(const cpi_enc_t iEncoding)
|
||||
{
|
||||
return (iEncoding >= 0) ? g_Encodings[iEncoding].wchLabel : NULL;
|
||||
}
|
||||
// ============================================================================
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
|
||||
const char* Encoding_GetParseNames(const cpi_enc_t iEncoding)
|
||||
{
|
||||
return (iEncoding >= 0) ? g_Encodings[iEncoding].pszParseNames : NULL;
|
||||
}
|
||||
// ============================================================================
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
|
||||
int Encoding_GetNameA(const cpi_enc_t iEncoding, char* buffer, size_t cch)
|
||||
@ -686,7 +686,7 @@ int Encoding_GetNameA(const cpi_enc_t iEncoding, char* buffer, size_t cch)
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
// ============================================================================
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
|
||||
int Encoding_GetNameW(const cpi_enc_t iEncoding, LPWSTR buffer, size_t cwch)
|
||||
@ -695,7 +695,7 @@ int Encoding_GetNameW(const cpi_enc_t iEncoding, LPWSTR buffer, size_t cwch)
|
||||
Encoding_GetNameA(iEncoding, tmpbuffer, 256);
|
||||
return (int)MultiByteToWideCharEx(Encoding_SciCP, 0, tmpbuffer, -1, buffer, cwch);
|
||||
}
|
||||
// ============================================================================
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
|
||||
bool Has_UTF32_LE_BOM(const char* pBuf, size_t cnt)
|
||||
|
||||
@ -93,20 +93,20 @@ bool Encoding_GetFromComboboxEx(HWND hwnd, cpi_enc_t* pidEncoding);
|
||||
UINT Encoding_GetCodePage(const cpi_enc_t iEncoding);
|
||||
|
||||
bool Encoding_IsDefault(const cpi_enc_t iEncoding);
|
||||
bool Encoding_IsASCII(const cpi_enc_t iEncoding);
|
||||
bool Encoding_IsANSI(const cpi_enc_t iEncoding);
|
||||
bool Encoding_IsOEM(const cpi_enc_t iEncoding);
|
||||
bool Encoding_HasASCII7Bit(const cpi_enc_t iEncoding);
|
||||
bool Encoding_IsSystemANSI_CP(const cpi_enc_t iEncoding);
|
||||
bool Encoding_IsSystemOEM(const cpi_enc_t iEncoding);
|
||||
bool Encoding_MaybeUTF8(const cpi_enc_t iEncoding);
|
||||
bool Encoding_IsUTF8_SIGN(const cpi_enc_t iEncoding);
|
||||
bool Encoding_MaybeUTF8_NO_SIGN(const cpi_enc_t iEncoding);
|
||||
bool Encoding_IsMBCS(const cpi_enc_t iEncoding);
|
||||
bool Encoding_IsCJK(const cpi_enc_t iEncoding);
|
||||
bool Encoding_IsUNICODE(const cpi_enc_t iEncoding);
|
||||
bool Encoding_IsUNICODE_BOM(const cpi_enc_t iEncoding);
|
||||
bool Encoding_IsUNICODE_REVERSE(const cpi_enc_t iEncoding);
|
||||
bool Encoding_IsINTERNAL(const cpi_enc_t iEncoding);
|
||||
bool Encoding_IsEXTERNAL_8BIT(const cpi_enc_t iEncoding);
|
||||
bool Encoding_IsRECODE(const cpi_enc_t iEncoding);
|
||||
bool Encoding_IsCJK(const cpi_enc_t iEncoding);
|
||||
|
||||
// Scintilla related
|
||||
#define Encoding_SciCP CP_UTF8
|
||||
|
||||
@ -877,14 +877,13 @@ static void _SetEncodingTitleInfo(const ENC_DET_T* pEncDetInfo)
|
||||
StringCchPrintf(tmpBuf, COUNTOF(tmpBuf), L"' Conf=%.1f%%", confPercent);
|
||||
StringCchCat(wchEncodingInfo, COUNTOF(wchEncodingInfo), tmpBuf);
|
||||
|
||||
double const threshPercent = (double)(Settings2.AnalyzeReliableConfidenceLevel * 100.0f);
|
||||
double const threshPercent = (double)Settings.AnalyzeReliableConfidenceLevel;
|
||||
const WCHAR* rel_fmt = (confPercent >= threshPercent) ? L" (reliable (%.1f%%))" : L" (NOT reliable (%.1f%%))";
|
||||
StringCchPrintf(tmpBuf, COUNTOF(tmpBuf), rel_fmt, threshPercent);
|
||||
StringCchCat(wchEncodingInfo, COUNTOF(wchEncodingInfo), tmpBuf);
|
||||
|
||||
const WCHAR* const validUTF8 = (pEncDetInfo->bValidUTF8) ? L" [Valid UTF-8]" : L" [Invalid UTF-8]";
|
||||
const WCHAR* const validUTF8 = (pEncDetInfo->bValidUTF8) ? (pEncDetInfo->bPureASCII7Bit ? L" [ASCII 7-bit]" : L" [Valid UTF-8]") : L" [Invalid UTF-8]";
|
||||
StringCchCat(wchEncodingInfo, COUNTOF(wchEncodingInfo), validUTF8);
|
||||
|
||||
}
|
||||
|
||||
|
||||
@ -1185,6 +1184,26 @@ extern "C" cpi_enc_t FileVars_GetEncoding(LPFILEVARS lpfv)
|
||||
//=============================================================================
|
||||
//=============================================================================
|
||||
|
||||
__forceinline static cpi_enc_t _SetAnsiDefaultEncoding(const ENC_DET_T* const encDetRes)
|
||||
{
|
||||
// Pure ASCII (7-bit) - use UTF-8 if configured, otherwise ANSI default
|
||||
if (Settings.LoadASCIIasUTF8 && encDetRes->bPureASCII7Bit) {
|
||||
return CPI_UTF8;
|
||||
}
|
||||
if (Encoding_IsValid(Settings.DefaultEncoding)) {
|
||||
if (Settings.DefaultEncoding == CPI_UTF8) {
|
||||
if (encDetRes->bValidUTF8) {
|
||||
return Settings.DefaultEncoding;
|
||||
}
|
||||
}
|
||||
else if (Encoding_IsEXTERNAL_8BIT(Settings.DefaultEncoding)) {
|
||||
return Settings.DefaultEncoding;
|
||||
}
|
||||
}
|
||||
return CPI_ANSI_DEFAULT;
|
||||
}
|
||||
|
||||
|
||||
static void _SetResultingEncoding(ENC_DET_T* encDetRes, bool bBOM_LE, bool bBOM_BE, size_t data_len)
|
||||
{
|
||||
if (encDetRes->bIsUTF8Sig) {
|
||||
@ -1197,59 +1216,54 @@ static void _SetResultingEncoding(ENC_DET_T* encDetRes, bool bBOM_LE, bool bBOM_
|
||||
else if (Encoding_IsValid(encDetRes->analyzedEncoding) && (encDetRes->bIsAnalysisReliable || !Settings.UseReliableCEDonly)) {
|
||||
// Valid UTF-8 byte sequence (no null bytes) prefer UTF-8 over
|
||||
// analyzed encoding. ASCII-only files are also valid UTF-8.
|
||||
if ((encDetRes->bValidUTF8) && (encDetRes->confidence < MIN_CONFIDENCE_ANSI_NOT_UTF8))
|
||||
if ((encDetRes->bValidUTF8) && (encDetRes->confidence < MIN_CONFIDENCE_ANSI_NOT_UTF8)) {
|
||||
encDetRes->Encoding = CPI_UTF8;
|
||||
else
|
||||
}
|
||||
else {
|
||||
encDetRes->Encoding = encDetRes->analyzedEncoding;
|
||||
}
|
||||
}
|
||||
else if (Encoding_IsUNICODE(encDetRes->unicodeAnalysis) && (!(data_len & 1) || encDetRes->bHasBOM)) {
|
||||
// unicodeAnalysis confirms Unicode structure.
|
||||
// Only prefer analyzedEncoding if it's also Unicode (e.g., UCHARDET
|
||||
// identified specific UTF-16 variant). Otherwise use unicodeAnalysis.
|
||||
if (Encoding_IsValid(encDetRes->analyzedEncoding) && Encoding_IsUNICODE(encDetRes->analyzedEncoding))
|
||||
if (Encoding_IsValid(encDetRes->analyzedEncoding) && Encoding_IsUNICODE(encDetRes->analyzedEncoding)) {
|
||||
encDetRes->Encoding = encDetRes->analyzedEncoding;
|
||||
else
|
||||
}
|
||||
else {
|
||||
encDetRes->Encoding = encDetRes->unicodeAnalysis;
|
||||
}
|
||||
}
|
||||
else if (encDetRes->bValidUTF8 && !encDetRes->bPureASCII7Bit) {
|
||||
// Non-ASCII data where all bytes form valid UTF-8 multi-byte sequences.
|
||||
// When UCHARDET was skipped or returned unreliable results, valid
|
||||
// multi-byte UTF-8 is a strong structural signal — prefer UTF-8 over
|
||||
// blind ANSI fallback.
|
||||
encDetRes->Encoding = CPI_UTF8;
|
||||
}
|
||||
else if (encDetRes->bPureASCII7Bit) {
|
||||
// pure ASCII (no null bytes, all 0x01-0x7F) — treat as UTF-8 or ANSI
|
||||
// depending on user preference
|
||||
encDetRes->Encoding = Settings.LoadASCIIasUTF8 ? CPI_UTF8 : CPI_ANSI_DEFAULT;
|
||||
}
|
||||
else if (encDetRes->bHasNullBytes) {
|
||||
// Data contains null bytes — not a valid single-byte encoding.
|
||||
// Both Unicode detectors (IsTextUnicode and null-distribution) already
|
||||
// rejected this data at earlier branches, so treat as binary via ANSI
|
||||
// codepage (same as UTF-32 handling).
|
||||
encDetRes->Encoding = CPI_ANSI_DEFAULT;
|
||||
}
|
||||
else {
|
||||
cpi_enc_t const weak = Encoding_SrcWeak(CPI_GET);
|
||||
if (Encoding_IsValid(weak)) {
|
||||
if ((weak == CPI_UTF8) && encDetRes->bValidUTF8) {
|
||||
// weak UTF-8 hint and data is valid UTF-8 - use weak hint
|
||||
encDetRes->Encoding = weak;
|
||||
}
|
||||
else if (Encoding_IsANSI(weak)) {
|
||||
encDetRes->Encoding = weak;
|
||||
|
||||
// Non-ASCII data where all bytes form valid UTF-8 multi-byte sequences.
|
||||
// When UCHARDET was skipped or returned unreliable results, valid
|
||||
// multi-byte UTF-8 is a strong structural signal — prefer UTF-8 over
|
||||
// blind ANSI fallback.
|
||||
if (Encoding_IsNONE(encDetRes->Encoding))
|
||||
{
|
||||
if (Settings.UseDefaultForFileEncoding) {
|
||||
encDetRes->Encoding = _SetAnsiDefaultEncoding(encDetRes);
|
||||
}
|
||||
else if (encDetRes->bValidUTF8 || (encDetRes->bPureASCII7Bit && Settings.LoadASCIIasUTF8))
|
||||
// pure ASCII (no null bytes, all 0x01-0x7F) — treat as UTF-8 or ANSI
|
||||
encDetRes->Encoding = CPI_UTF8;
|
||||
else {
|
||||
cpi_enc_t const weak = Encoding_SrcWeak(CPI_GET);
|
||||
if (Encoding_IsValid(weak)) {
|
||||
if ((weak == CPI_UTF8) && encDetRes->bValidUTF8) {
|
||||
// weak UTF-8 hint and data is valid UTF-8 - use weak hint
|
||||
encDetRes->Encoding = weak;
|
||||
}
|
||||
else if (Encoding_IsEXTERNAL_8BIT(weak)) {
|
||||
encDetRes->Encoding = weak;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Final fallback: use preferred encoding if configured, otherwise system ANSI codepage
|
||||
// Final fallback / last resort: if still no encoding, but valid UTF-8, use UTF-8.
|
||||
if (Encoding_IsNONE(encDetRes->Encoding)) {
|
||||
if (Settings.UseDefaultForFileEncoding && Encoding_IsValid(Settings.DefaultEncoding)) {
|
||||
encDetRes->Encoding = Settings.DefaultEncoding;
|
||||
} else {
|
||||
encDetRes->Encoding = CPI_ANSI_DEFAULT;
|
||||
}
|
||||
encDetRes->Encoding = (encDetRes->bValidUTF8) ? CPI_UTF8 : CPI_ANSI_DEFAULT;
|
||||
}
|
||||
}
|
||||
|
||||
@ -1376,7 +1390,7 @@ extern "C" ENC_DET_T Encoding_DetectEncoding(const HPATHL hpath,
|
||||
// --- choose best encoding guess ----
|
||||
// --------------------------------------------------------------------------
|
||||
|
||||
encDetRes.bIsAnalysisReliable = (encDetRes.confidence >= Settings2.AnalyzeReliableConfidenceLevel);
|
||||
encDetRes.bIsAnalysisReliable = (encDetRes.confidence >= ((float)Settings.AnalyzeReliableConfidenceLevel / 100.0f));
|
||||
|
||||
// init resulting encoding
|
||||
encDetRes.Encoding = CPI_NONE;
|
||||
|
||||
@ -4339,7 +4339,7 @@ LRESULT MsgInitMenu(HWND hwnd, WPARAM wParam, LPARAM lParam)
|
||||
i = IDM_ENCODING_UTF8SIGN;
|
||||
} else if (Encoding_MaybeUTF8(Encoding_GetCurrent())) {
|
||||
i = IDM_ENCODING_UTF8;
|
||||
} else if (Encoding_IsANSI(Encoding_GetCurrent())) {
|
||||
} else if (Encoding_IsSystemANSI_CP(Encoding_GetCurrent())) {
|
||||
i = IDM_ENCODING_ANSI;
|
||||
} else {
|
||||
i = -1;
|
||||
|
||||
@ -640,6 +640,7 @@ typedef struct SETTINGS_T {
|
||||
bool NoEncodingTags;
|
||||
bool SkipUnicodeDetection;
|
||||
bool SkipANSICodePageDetection;
|
||||
int AnalyzeReliableConfidenceLevel;
|
||||
int DefaultEOLMode;
|
||||
bool WarnInconsistEOLs;
|
||||
bool FixLineEndings;
|
||||
@ -789,7 +790,6 @@ typedef struct SETTINGS2_T {
|
||||
int DarkModeHiglightContrast;
|
||||
int UchardetLanguageFilter;
|
||||
|
||||
float AnalyzeReliableConfidenceLevel;
|
||||
float LocaleAnsiCodePageAnalysisBonus;
|
||||
|
||||
#ifdef D_NP3_WIN10_DARK_MODE
|
||||
|
||||
Loading…
Reference in New Issue
Block a user