par , 12/07/2016 à 18h49 (755 Affichages)
---
Lazarus n'est pas encore au niveau de Delphi dans le domaine des chaînes de caractères Unicode. Un travail intense est en cours, mais aucune date n'est fixée pour le passage complet du compilateur et de l'EDI à d'autres normes que l'UTF8.
Par conséquent, il est parfois impossible d'utiliser des routines écrites pour Delphi et souvent assez délicat de les traduire . Tel est le cas d'une fonction chargée de convertir une chaîne accentuée ou comprenant des caractères spéciaux en chaîne HTML.
Pour réussir l'adaptation à Free Pascal, il faut passer par les solutions proposées dans l'unité lazUTF8. Voici ce que peut donner une telle fonction :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118
|
function UTF82HTML(const St : string) : string;
var
Li : integer;
LSt: string;
begin
Result := '';
for Li := 1 to UTF8Length(St) do
begin
LSt := UTF8Copy(St, Li, 1);
if Length(LSt) = 1 then
begin
Result := Result + LSt;
end
else
begin
case UTF8Pos(LSt, '™©®ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþÿ¡¢£¤¥¦§¨ª«¬¯°±²³´µ·¸¹º»¼½¾¿×÷€') of
1 : Result := Result + '™';
2 : Result := Result + '©';
3 : Result := Result + '®';
4 : Result := Result + 'À';
5 : Result := Result + 'Á';
6 : Result := Result + 'Â';
7 : Result := Result + 'Ã';
8 : Result := Result + 'Ä';
9 : Result := Result + 'Å';
10 : Result := Result + 'Æ';
11 : Result := Result + 'Ç';
12 : Result := Result + 'È';
13 : Result := Result + 'É';
14 : Result := Result + 'Ê';
15 : Result := Result + 'Ë';
16 : Result := Result + 'Ì';
17 : Result := Result + 'Í';
18 : Result := Result + 'Î';
19 : Result := Result + 'Ï';
20 : Result := Result + 'Ð';
21 : Result := Result + 'Ñ';
22 : Result := Result + 'Ò';
23 : Result := Result + 'Ó';
24 : Result := Result + 'Ô';
25 : Result := Result + 'Õ';
26 : Result := Result + 'Ö';
27 : Result := Result + 'Ø';
28 : Result := Result + 'Ù';
29 : Result := Result + 'Ú';
30 : Result := Result + 'Û';
31 : Result := Result + 'Ü';
32 : Result := Result + 'Ý';
33 : Result := Result + 'Þ';
34 : Result := Result + 'ß';
35 : Result := Result + 'à';
36 : Result := Result + 'á';
37 : Result := Result + 'â';
38 : Result := Result + 'ã';
39 : Result := Result + 'ä';
40 : Result := Result + 'å';
41 : Result := Result + 'æ';
42 : Result := Result + 'ç';
43 : Result := Result + 'è';
44 : Result := Result + 'é';
45 : Result := Result + 'ê';
46 : Result := Result + 'ë';
47 : Result := Result + 'ì';
48 : Result := Result + 'í';
49 : Result := Result + 'î';
50 : Result := Result + 'ï';
51 : Result := Result + 'ð';
52 : Result := Result + 'ñ';
53 : Result := Result + 'ò';
54 : Result := Result + 'ó';
55 : Result := Result + 'ô';
56 : Result := Result + 'õ';
57 : Result := Result + 'ö';
58 : Result := Result + 'ø';
59 : Result := Result + 'ù';
60 : Result := Result + 'ú';
61 : Result := Result + 'û';
62 : Result := Result + 'ü';
63 : Result := Result + 'ý';
64 : Result := Result + 'þ';
65 : Result := Result + 'ÿ';
66 : Result := Result + '¡';
67 : Result := Result + '¢';
68 : Result := Result + '£';
69 : Result := Result + '¤';
70 : Result := Result + '¥';
71 : Result := Result + '¦';
72 : Result := Result + '§';
73 : Result := Result + '¨';
74 : Result := Result + 'ª';
75 : Result := Result + '«';
76 : Result := Result + '*';
77 : Result := Result + '¯';
78 : Result := Result + '°';
79 : Result := Result + '±';
80 : Result := Result + '²';
81 : Result := Result + '³';
82 : Result := Result + '´';
83 : Result := Result + 'µ';
84 : Result := Result + '·';
85 : Result := Result + '¸';
86 : Result := Result + '¹';
87 : Result := Result + 'º';
88 : Result := Result + '»';
89 : Result := Result + '¼';
90 : Result := Result + '½';
91 : Result := Result + '¾';
92 : Result := Result + '¿';
93 : Result := Result + '×';
94 : Result := Result + '÷';
95 : Result := Result + '€';
else
Result := Result + '?';
end;
end;
end;
end; |
Reste à écrire sa soeur capable de faire l'inverse .