2
0
Эх сурвалжийг харах

FIX: Viewer does not display KOI8 (fixes #726)

Alexander Koblov 2 жил өмнө
parent
commit
b3bd295976

+ 18 - 6
components/viewer/viewercontrol.pas

@@ -152,7 +152,9 @@ type
                      veCp950,
                      veIso88591,
                      veIso88592,
-                     veKoi8,
+                     veKoi8r,
+                     veKoi8u,
+                     veKoi8ru,
                      veUcs2le,
                      veUcs2be,
                      veUtf16le,
@@ -189,7 +191,9 @@ const
                     'CP950',
                     'ISO-8859-1',
                     'ISO-8859-2',
-                    'KOI-8',
+                    'KOI8-R',
+                    'KOI8-U',
+                    'KOI8-RU',
                     'UCS-2LE',
                     'UCS-2BE',
                     'UTF-16LE',
@@ -2981,7 +2985,9 @@ begin
     veCp1250..veCp950,
     veIso88591,
     veIso88592,
-    veKoi8:
+    veKoi8r,
+    veKoi8u,
+    veKoi8ru:
       if iPosition < FHighLimit then
       begin
         Result := PByte(GetDataAdr)[iPosition];
@@ -3103,7 +3109,9 @@ begin
     veCp1250..veCp950,
     veIso88591,
     veIso88592,
-    veKoi8:
+    veKoi8r,
+    veKoi8u,
+    veKoi8ru:
       if iPosition > FLowLimit then
       begin
         Result := PByte(GetDataAdr + iPosition)[-1];
@@ -3211,7 +3219,9 @@ begin
     veCp1250..veCp950,
     veIso88591,
     veIso88592,
-    veKoi8:
+    veKoi8r,
+    veKoi8u,
+    veKoi8ru:
       CharLenInBytes := 1;
     veUcs2be, veUcs2le:
       CharLenInBytes := 2;
@@ -3617,7 +3627,9 @@ procedure TViewerControl.UpdateSelection;
       veCp1250..veCp950,
       veIso88591,
       veIso88592,
-      veKoi8:
+      veKoi8r,
+      veKoi8u,
+      veKoi8ru:
         ; // any position allowed
 
       veUcs2be, veUcs2le:

+ 3 - 3
src/uconvencoding.pas

@@ -301,7 +301,7 @@ begin
       M := D;
       case CodePage of
         cp1251 : Result:= 'CP1251';
-        cpKOI8R: Result:= 'KOI-8';
+        cpKOI8R: Result:= 'KOI8-R';
         cp866  : Result:= 'CP866';
       end;
     end;
@@ -327,7 +327,7 @@ begin
        1252: Result:= 'CP1252';
        1253: Result:= 'CP1253';
        1255: Result:= 'CP1255';
-      20866: Result:= 'KOI-8';
+      20866: Result:= 'KOI8-R';
       else
         begin
           Result:= CharsetInfo.Name;
@@ -493,7 +493,7 @@ begin
       Inc(P);
     end
     else begin
-      I:= UTF8CharacterStrictLength(@S[P]);
+      I:= UTF8CodepointStrictSize(@S[P]);
       if (I = 0) then
       begin
         // Ignore last char