Pas de problème (pb), que du PowerBuilder (PB) ^^

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