mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-07-18 17:26:22 +02:00
LazUtils: Add encoding ISO-8859-14 to LConvEncoding. Issue #39784, patch by Alexey Torgashin.
This commit is contained in:
parent
464d077fd4
commit
494fa2abc8
@ -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
|
||||
|
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user