Après windows pour les nuls, voici PB pour les bons (ou presque).

Le forum (ô combien francophone) des utilisateurs de Powerbuilder.

Recherche rapide

Annonce

Certaines rubriques, dont des cours, sont uniquement visibles par les membres du forum ^^.
Dans la rubrique Liens & Références, vous avez accès à un sommaire de téléchargement, profitez-en !
Il existe maintenant un nouveau TOPIC "Votre CV en Ligne" accessible uniquement par demande.
  • Index
  •  » Powerscripts
  •  » PB9 conversion d'une chaine avec de l'UTF8 en ANSI/ASCII iso-8859-1

#1 14-09-2024 11:36:40

FlorentP  
Membre completement Geek
Award: bf
Lieu: Marseille
Date d'inscription: 23-03-2011
Messages: 105
Pépites: 1,459
Banque: 0

PB9 conversion d'une chaine avec de l'UTF8 en ANSI/ASCII iso-8859-1

Je suis avec une ancienne version de PB qui ne gère pas les wchar.

J'interroge un server HTTP qui me renvoie du texte en Français avec des caractère UTF-8.

Vous avez des idées pour faire la conversion  iso-8859-1 simplement dans les string pb9 ?

Hors ligne

 

#2 15-09-2024 09:23:44

xlat  
0xc0000005
Award: bf
Lieu: Tanger (طنج)
Date d'inscription: 04-12-2010
Messages: 723
Pépites: 11,352
Banque: 100,221,387,868,884,300
Site web

Re: PB9 conversion d'une chaine avec de l'UTF8 en ANSI/ASCII iso-8859-1

Salut,

si tu récupères correctement le texte utf-8 dans un fichier tu peux utiliser iconv en ligne de commande https://superuser.com/a/69197
> iconv -f UTF-8 -t ISO-8859-1 filename.txt

si tu peux le récupérer dans un blob, il y a peut-être moyen de passer par les API windows: MultiByteToWideChar, mais j'suis pas certain que ca le fasse.

tu pourrais aussi porter cette fonction C en Powerscript : https://stackoverflow.com/a/11173493

il y aurait aussi une solution payante via un activeX : https://www.example-code.com/powerbuild … o_ansi.asp

Bon encodage


https://lut.im/eJINqa9o/vAtyxD0h "Don't believe everything you read on the Internet"
    -- Abraham Lincoln

www.ngs.ma

Hors ligne

 

#3 15-09-2024 13:19:01

FlorentP  
Membre completement Geek
Award: bf
Lieu: Marseille
Date d'inscription: 23-03-2011
Messages: 105
Pépites: 1,459
Banque: 0

Re: PB9 conversion d'une chaine avec de l'UTF8 en ANSI/ASCII iso-8859-1

Merci, en fait je ne suis même pas sur que je récupère vraiment du l'UTF8 dans tous les cas.

Je suis tombé sur une table de correspondance : https://www.utf8-chartable.de/
et mon charset de destination est celui de PB.

Code: pb

// convertie une chaine de caratere sur un octet mais contenant des suites de car utf8 sur deux octet en un caratere iso-8859-1

long ll_len
long i, i2

ll_len = len(p_str)

if ll_len > 20000 - 1 then return "Erreur f_str_utf8_to_iso88591 chaine en entree trop grande"

char t[20000]
string s
char c
char c2

i = 1    // indice sur chaine a lire
i2 = 1   // indice sur chaine a écrire

DO WHILE i <= ll_len
  c = mid(p_str, i,1)

  choose case asc(c)
    case 0 TO 127
      t[i2] = c      
      
    case  194 // 0xC2  
      i++
      c2 = mid(p_str, i,1)
      t[i2] = c2    
      
    case  195 // 0xC3
      i++
      c2 = mid(p_str, i,1)  
      t[i2] = char(asc(c2)+64)


    case 189 
      i++
      c2 = mid(p_str, i,1)        
      t[i2] = "*"
      
    case 191
      i++
      c2 = mid(p_str, i,1)        
      t[i2] = "+"      
      
    case 239
      i++
      c2 = mid(p_str, i,1)        
      t[i2] = "#"        
      
    case else
      messagebox("f_str_utf8_to_iso", "la valeur de asc(c)!"+string(asc(c)))
  end choose
  i++
  i2++
LOOP

return string(t)

Dernière modification par FlorentP (15-09-2024 13:21:56)

Hors ligne

 
  • Index
  •  » Powerscripts
  •  » PB9 conversion d'une chaine avec de l'UTF8 en ANSI/ASCII iso-8859-1

Pied de page des forums

Propulsé par FluxBB 1.2.22