LazUtils: Add encoding ISO-8859-14 to LConvEncoding. Issue #39784, patch by Alexey Torgashin.

This commit is contained in:
Juha 2022-06-07 12:46:57 +03:00
parent 464d077fd4
commit 494fa2abc8
2 changed files with 324 additions and 0 deletions

View File

@ -533,6 +533,265 @@ const
#195#191 // #255
);
ArrayISO_8859_14ToUTF8: TCharToUTF8Table = (
#0, // #0
#1, // #1
#2, // #2
#3, // #3
#4, // #4
#5, // #5
#6, // #6
#7, // #7
#8, // #8
#9, // #9
#10, // #10
#11, // #11
#12, // #12
#13, // #13
#14, // #14
#15, // #15
#16, // #16
#17, // #17
#18, // #18
#19, // #19
#20, // #20
#21, // #21
#22, // #22
#23, // #23
#24, // #24
#25, // #25
#26, // #26
#27, // #27
#28, // #28
#29, // #29
#30, // #30
#31, // #31
' ', // ' '
'!', // '!'
'"', // '"'
'#', // '#'
'$', // '$'
'%', // '%'
'&', // '&'
'''', // ''''
'(', // '('
')', // ')'
'*', // '*'
'+', // '+'
',', // ','
'-', // '-'
'.', // '.'
'/', // '/'
'0', // '0'
'1', // '1'
'2', // '2'
'3', // '3'
'4', // '4'
'5', // '5'
'6', // '6'
'7', // '7'
'8', // '8'
'9', // '9'
':', // ':'
';', // ';'
'<', // '<'
'=', // '='
'>', // '>'
'?', // '?'
'@', // '@'
'A', // 'A'
'B', // 'B'
'C', // 'C'
'D', // 'D'
'E', // 'E'
'F', // 'F'
'G', // 'G'
'H', // 'H'
'I', // 'I'
'J', // 'J'
'K', // 'K'
'L', // 'L'
'M', // 'M'
'N', // 'N'
'O', // 'O'
'P', // 'P'
'Q', // 'Q'
'R', // 'R'
'S', // 'S'
'T', // 'T'
'U', // 'U'
'V', // 'V'
'W', // 'W'
'X', // 'X'
'Y', // 'Y'
'Z', // 'Z'
'[', // '['
'\', // '\'
']', // ']'
'^', // '^'
'_', // '_'
'`', // '`'
'a', // 'a'
'b', // 'b'
'c', // 'c'
'd', // 'd'
'e', // 'e'
'f', // 'f'
'g', // 'g'
'h', // 'h'
'i', // 'i'
'j', // 'j'
'k', // 'k'
'l', // 'l'
'm', // 'm'
'n', // 'n'
'o', // 'o'
'p', // 'p'
'q', // 'q'
'r', // 'r'
's', // 's'
't', // 't'
'u', // 'u'
'v', // 'v'
'w', // 'w'
'x', // 'x'
'y', // 'y'
'z', // 'z'
'{', // '{'
'|', // '|'
'}', // '}'
'~', // '~'
#127, // #127
#$C2#$80, // #128
#$C2#$81, // #129
#$C2#$82, // #130
#$C2#$83, // #131
#$C2#$84, // #132
#$C2#$85, // #133
#$C2#$86, // #134
#$C2#$87, // #135
#$C2#$88, // #136
#$C2#$89, // #137
#$C2#$8A, // #138
#$C2#$8B, // #139
#$C2#$8C, // #140
#$C2#$8D, // #141
#$C2#$8E, // #142
#$C2#$8F, // #143
#$C2#$90, // #144
#$C2#$91, // #145
#$C2#$92, // #146
#$C2#$93, // #147
#$C2#$94, // #148
#$C2#$95, // #149
#$C2#$96, // #150
#$C2#$97, // #151
#$C2#$98, // #152
#$C2#$99, // #153
#$C2#$9A, // #154
#$C2#$9B, // #155
#$C2#$9C, // #156
#$C2#$9D, // #157
#$C2#$9E, // #158
#$C2#$9F, // #159
#$C2#$A0, // #160
#$E1#$B8#$82, // #161
#$E1#$B8#$83, // #162
#$C2#$A3, // #163
#$C4#$8A, // #164
#$C4#$8B, // #165
#$E1#$B8#$8A, // #166
#$C2#$A7, // #167
#$E1#$BA#$80, // #168
#$C2#$A9, // #169
#$E1#$BA#$82, // #170
#$E1#$B8#$8B, // #171
#$E1#$BB#$B2, // #172
#$C2#$AD, // #173
#$C2#$AE, // #174
#$C5#$B8, // #175
#$E1#$B8#$9E, // #176
#$E1#$B8#$9F, // #177
#$C4#$A0, // #178
#$C4#$A1, // #179
#$E1#$B9#$80, // #180
#$E1#$B9#$81, // #181
#$C2#$B6, // #182
#$E1#$B9#$96, // #183
#$E1#$BA#$81, // #184
#$E1#$B9#$97, // #185
#$E1#$BA#$83, // #186
#$E1#$B9#$A0, // #187
#$E1#$BB#$B3, // #188
#$E1#$BA#$84, // #189
#$E1#$BA#$85, // #190
#$E1#$B9#$A1, // #191
#$C3#$80, // #192
#$C3#$81, // #193
#$C3#$82, // #194
#$C3#$83, // #195
#$C3#$84, // #196
#$C3#$85, // #197
#$C3#$86, // #198
#$C3#$87, // #199
#$C3#$88, // #200
#$C3#$89, // #201
#$C3#$8A, // #202
#$C3#$8B, // #203
#$C3#$8C, // #204
#$C3#$8D, // #205
#$C3#$8E, // #206
#$C3#$8F, // #207
#$C5#$B4, // #208
#$C3#$91, // #209
#$C3#$92, // #210
#$C3#$93, // #211
#$C3#$94, // #212
#$C3#$95, // #213
#$C3#$96, // #214
#$E1#$B9#$AA, // #215
#$C3#$98, // #216
#$C3#$99, // #217
#$C3#$9A, // #218
#$C3#$9B, // #219
#$C3#$9C, // #220
#$C3#$9D, // #221
#$C5#$B6, // #222
#$C3#$9F, // #223
#$C3#$A0, // #224
#$C3#$A1, // #225
#$C3#$A2, // #226
#$C3#$A3, // #227
#$C3#$A4, // #228
#$C3#$A5, // #229
#$C3#$A6, // #230
#$C3#$A7, // #231
#$C3#$A8, // #232
#$C3#$A9, // #233
#$C3#$AA, // #234
#$C3#$AB, // #235
#$C3#$AC, // #236
#$C3#$AD, // #237
#$C3#$AE, // #238
#$C3#$AF, // #239
#$C5#$B5, // #240
#$C3#$B1, // #241
#$C3#$B2, // #242
#$C3#$B3, // #243
#$C3#$B4, // #244
#$C3#$B5, // #245
#$C3#$B6, // #246
#$E1#$B9#$AB, // #247
#$C3#$B8, // #248
#$C3#$B9, // #249
#$C3#$BA, // #250
#$C3#$BB, // #251
#$C3#$BC, // #252
#$C3#$BD, // #253
#$C5#$B7, // #254
#$C3#$BF // #255
);
ArrayISO_8859_15ToUTF8: TCharToUTF8Table = (
#0, // #0
#1, // #1

View File

@ -80,6 +80,7 @@ const
EncodingCPIso1 = 'iso88591';
EncodingCPIso2 = 'iso88592';
EncodingCPIso9 = 'iso88599';
EncodingCPIso14 = 'iso885914';
EncodingCPIso15 = 'iso885915';
//signatures in ansi
@ -349,6 +350,11 @@ begin
Result:=SingleByteToUTF8(s,ArrayISO_8859_1ToUTF8);
end;
function ISO_8859_14ToUTF8(const s: string): string;
begin
Result:=SingleByteToUTF8(s,ArrayISO_8859_14ToUTF8);
end;
function ISO_8859_15ToUTF8(const s: string): string;
begin
Result:=SingleByteToUTF8(s,ArrayISO_8859_15ToUTF8);
@ -1113,6 +1119,58 @@ begin
end;
end;
function UnicodeToISO_8859_14(Unicode: cardinal): integer;
begin
case Unicode of
0..$A0: Result:=Unicode;
$A3,
$A7,
$A9,
$AD,
$AE,
$B6: Result:= Unicode;
$1E02: Result:= $A1;
$1E03: Result:= $A2;
$10A: Result:= $A4;
$10B: Result:= $A5;
$1E0A: Result:= $A6;
$1E80: Result:= $A8;
$1E82: Result:= $AA;
$1E0B: Result:= $AB;
$1EF2: Result:= $AC;
$178: Result:= $AF;
$1E1E: Result:= $B0;
$1E1F: Result:= $B1;
$120: Result:= $B2;
$121: Result:= $B3;
$1E40: Result:= $B4;
$1E41: Result:= $B5;
$1E56: Result:= $B7;
$1E81: Result:= $B8;
$1E57: Result:= $B9;
$1E83: Result:= $BA;
$1E60: Result:= $BB;
$1EF3: Result:= $BC;
$1E84: Result:= $BD;
$1E85: Result:= $BE;
$1E61: Result:= $BF;
$C0..$CF: Result:= Unicode;
$174: Result:= $D0;
$D1..$D6: Result:= Unicode;
$1E6A: Result:= $D7;
$D8..$DD: Result:= Unicode;
$176: Result:= $DE;
$DF..$EF: Result:= Unicode;
$175: Result:= $F0;
$F1..$F6: Result:= Unicode;
$1E6B: Result:= $F7;
$F8..$FD: Result:= Unicode;
$177: Result:= $FE;
$FF: Result:= $FF;
else Result:=-1;
end;
end;
function UnicodeToISO_8859_15(Unicode: cardinal): integer;
begin
case Unicode of
@ -1984,6 +2042,11 @@ begin
InternalUTF8ToCP(s,28599,SetTargetCodePage,{$IfDef UseSystemCPConv}nil{$else}@UnicodeToISO_8859_9{$endif},Result);
end;
function UTF8ToISO_8859_14(const s: string; SetTargetCodePage: boolean): RawByteString;
begin
InternalUTF8ToCP(s,28604,SetTargetCodePage,{$IfDef UseSystemCPConv}nil{$else}@UnicodeToISO_8859_14{$endif},Result);
end;
function UTF8ToISO_8859_15(const s: string; SetTargetCodePage: boolean): RawByteString;
begin
InternalUTF8ToCP(s,28605,SetTargetCodePage,{$IfDef UseSystemCPConv}nil{$else}@UnicodeToISO_8859_15{$endif},Result);
@ -2394,6 +2457,7 @@ begin
if ATo=EncodingUTF8BOM then begin Result:=UTF8ToUTF8BOM(s); exit; end;
if ATo=EncodingCPIso1 then begin Result:=UTF8ToISO_8859_1(s,SetTargetCodePage); exit; end;
if ATo=EncodingCPIso14 then begin Result:=UTF8ToISO_8859_14(s,SetTargetCodePage); exit; end;
if ATo=EncodingCPIso15 then begin Result:=UTF8ToISO_8859_15(s,SetTargetCodePage); exit; end;
if ATo=EncodingCPIso2 then begin Result:=UTF8ToISO_8859_2(s,SetTargetCodePage); exit; end;
if ATo=EncodingCPIso9 then begin Result:=UTF8ToISO_8859_9(s,SetTargetCodePage); exit; end;
@ -2442,6 +2506,7 @@ begin
if AFrom=EncodingUTF8BOM then begin Result:=UTF8BOMToUTF8(s); exit; end;
if AFrom=EncodingCPIso1 then begin Result:=ISO_8859_1ToUTF8(s); exit; end;
if AFrom=EncodingCPIso14 then begin Result:=ISO_8859_14ToUTF8(s); exit; end;
if AFrom=EncodingCPIso15 then begin Result:=ISO_8859_15ToUTF8(s); exit; end;
if AFrom=EncodingCPIso2 then begin Result:=ISO_8859_2ToUTF8(s); exit; end;
if AFrom=EncodingCPIso9 then begin Result:=ISO_8859_9ToUTF8(s); exit; end;