IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Voir le flux RSS

Blog de Gilles Vasseur - Pascal et compagnie

Conversion des caractères accentués et spéciaux de UTF8 vers HTML

Noter ce billet
par , 12/07/2016 à 18h49 (742 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 :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 .

Envoyer le billet « Conversion des caractères accentués et spéciaux de UTF8 vers HTML » dans le blog Viadeo Envoyer le billet « Conversion des caractères accentués et spéciaux de UTF8 vers HTML » dans le blog Twitter Envoyer le billet « Conversion des caractères accentués et spéciaux de UTF8 vers HTML » dans le blog Google Envoyer le billet « Conversion des caractères accentués et spéciaux de UTF8 vers HTML » dans le blog Facebook Envoyer le billet « Conversion des caractères accentués et spéciaux de UTF8 vers HTML » dans le blog Digg Envoyer le billet « Conversion des caractères accentués et spéciaux de UTF8 vers HTML » dans le blog Delicious Envoyer le billet « Conversion des caractères accentués et spéciaux de UTF8 vers HTML » dans le blog MySpace Envoyer le billet « Conversion des caractères accentués et spéciaux de UTF8 vers HTML » dans le blog Yahoo

Mis à jour 17/08/2016 à 23h16 par gvasseur58

Catégories
Lazarus

Commentaires