Bonjour tout le monde !
Voilà, j'ai un problème pour tronquer du texte dans les pays suivant :
- Japon (Japonnais) : 1 caractère peut aller jusqu'à 4 octets
- Corée (Coréen) : 1 caractère peut aller jusqu'à 4 octets
- Thailande (Thai) : 1 caractère peut aller jusqu'à 3 octets
Que me conseillez-vous pour tronquer une chaine de caractère, sans tronquer l'idéogramme ?
=> Je veux que le dernier "idéogramme" soit complet.
Pour le Chinois, le Vietnamien et le taiwanais, j'arrive à contrer le problème car un caractère peut aller jusqu'à 2 octets.
Dans ce cas, j'ai écris une petite procédure delphi :
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 function TForm.RenvoieChaineFormatee(Chaine: String; NbCaractere: integer): String; var AsciiVal: Integer; Cpt : Integer; C: Char; DebutIdeogramme : Boolean; begin Result:= ''; DebutIdeogramme := True; for Cpt := 1 to Length(Chaine) do begin C := Chaine[Cpt]; AsciiVal := Ord(C); if (AsciiVal > 128) then begin if DebutIdeogramme then begin DebutIdeogramme := False; if Cpt >= NbCaractere then break else Result := Result + C; end else begin DebutIdeogramme := True; Result := Result + C; end; end else Result := Result + C; end; end;
Partager