Conversion ASCII UNICODE UTF8

Partagez votre expérience de PureBasic avec les autres utilisateurs.
PAPIPP
Messages : 534
Inscription : sam. 23/févr./2008 17:58

Conversion ASCII UNICODE UTF8

Message par PAPIPP »

Bonjour à tous

Voici une méthode simple qui à partir d’un environnement ASCII ou UNICODE convertit :

UNICODE vers => ASCII
UNICODE vers => UTF8
ASCII vers => UNICODE
ASCII VERS =>UTF8

Ainsi que la création d'un fichier sans conversion.
UNICODE => UNICODE
ASCII => ASCII

Les fichiers *.TXT créés ont pour nom :
ALPHA environnement(ASCII ou UNICODE) Conversion(ASCII_ou UNICODE ou UTF8).TXT

Ils sont sur la racine de c:\

Ont peut les visualiser avec un éditeur HEXA de type HxD gratuit sur le web

Code : Tout sélectionner

for ii=32 to 255
  alpha$+chr(ii)
Next
length=len(alpha$)
CompilerIf #PB_Compiler_Unicode
  ;;*** L'environnement est en UNICODE *****
    ;;;   Ecriture  directe du fichier en UNICODE 
  createfile(11,"C:\ALPHA_UNICODE_UNICODE.txt")
  WriteData(11,@alpha$,length*2) ;;; Longueur en octets 1 car UNICODE = 2 octets
  closefile(11)
  
  ;; **** Conversion Unicode vers ASCII *********
  ASCII$=space(length)
  pokes(@ASCII$,ALPHA$,length,#PB_Ascii  )
  ;;;   Ecriture du fichier en ASCII
  ;   LASCII=len(ASCII$)
  createfile(11,"C:\ALPHA_UNICODE_ASCII.txt")
  WriteData(11,@ASCII$,length) ;;; Le nombre d'octets = le nombre de caractère en ASCII
  closefile(11)
  
  ;; **** Conversion Unicode vers UTF8 *********
  UTF8$=space(length*2)
  pokes(@UTF8$,ALPHA$,length,#PB_UTF8  )
  ;;;   Ecriture du fichier EN UTF8
  createfile(11,"C:\ALPHA_UNICODE_UTF8.txt")
  LUTF8=len(UTF8$)*2 ;;; en univers UNICODE UTF8 est considéré comme UNICODE doc 1 car = 2 octets
  WriteData(11,@UTF8$,LUTF8) ;;; 
  closefile(11)
  
    ;;; conversion de UTF8 en  univers UNICODE
  UNICODE$=SPACE(512)
  UNICODE$=peeks(@UTF8$,512,#PB_UTF8);;; Conversion de la chaine UTF8 en Unicode dans l'univers Unicode
  createfile(11,"C:\ALPHA_UTF8_UNICODE.txt")
  WriteData(11,@UNICODE$,len(UNICODE$)*2) ;;; Longueur en octets 1 car UNICODE = 2 octets
  closefile(11)

    ;;; conversion de ASCII en  univers UNICODE
  UNICODE$=SPACE(512)
  UNICODE$=peeks(@ASCII$,512,#PB_Ascii)  ;;; Conversion de la chaine ASCII en Unicode dans l'univers Unicode
  createfile(11,"C:\ALPHA_UNICODE_ASCII_UNICODE.txt")
  WriteData(11,@UNICODE$,len(UNICODE$)*2) ;;; Longueur en octets 1 car UNICODE = 2 octets
  closefile(11)
CompilerElse 
    ;;*** L'environnement est en ASCII *****
    ;;;   Ecriture  directe du fichier en ASCII
  createfile(11,"C:\ALPHA_ASCII_ASCII.txt")
  WriteData(11,@alpha$,length) ;;; Longueur en octets 1 car ASCII  = 1 octet
  closefile(11)

    ;; **** Conversion ASCII vers UNICODE  *********reatefile
  UNICODE$=space(length*2)
  pokes(@UNICODE$,ALPHA$,length*2,#PB_Unicode )
  ;;;   Ecriture du fichier en UNICODE
  createfile(11,"C:\ALPHA_ASCII_UNICODE.txt")
  WriteData(11,@UNICODE$,length*2) ;;; 
  closefile(11)

  ;; **** Conversion ASCII vers UTF8 *********
  UTF8$=space(length*2)
  pokes(@UTF8$,ALPHA$,length*2,#PB_UTF8  )
  ;;;   Ecriture du fichier EN UTF8
  createfile(11,"C:\ALPHA_ASCII_UTF8.txt")
  LUTF8=len(UTF8$)
  WriteData(11,@UTF8$,LUTF8) ;;; 
  closefile(11)
  
      ;;; conversion de UTF8 en  univers ASCII 
  ASCII$=space(256)
  ASCII$=peeks(@UTF8$,256,#PB_UTF8);;; Conversion d'une chaine UTF8 en ASCII dans l'univers ASCII
  createfile(11,"C:\ALPHA_UTF8_ASCII.txt")
  WriteData(11,@ASCII$,len(ASCII$)) ;;; Longueur en octets 1 car UNICODE = 2 octets
  closefile(11)

       ;;; conversion de UNICODE en  univers ASCII 
  ASCII$=space(256)
  ASCII$=peeks(@UNICODE$,256,#PB_Unicode);;; Conversion d'une chaine Unicode en ASCII dans l'univers ASCII
  createfile(11,"C:\ALPHA_ASCII_UNICODE_ASCII.txt")
  WriteData(11,@ASCII$,len(ASCII$)) ;;; Longueur en octets 1 car UNICODE = 2 octets
  closefile(11)
   
CompilerEndIf 
A+
Dernière modification par PAPIPP le ven. 24/nov./2017 10:36, modifié 1 fois.
Il est fort peu probable que les mêmes causes ne produisent pas les mêmes effets.(Einstein)
Et en logique positive cela donne.
Il est très fortement probable que les mêmes causes produisent les mêmes effets.
PAPIPP
Messages : 534
Inscription : sam. 23/févr./2008 17:58

Re: Conversion ASCII UNICODE UTF8

Message par PAPIPP »

Suite

J'ai ajouté les conversions
UTF8 vers => UNICODE
et UTF8 vers => ASCII suivant l'environnement dans lequel on se situe.

dans l'univers UNICODE (Compilateur en UNICODE) ont peut convertir UTF8 en UNICODE
et si l'on veut dans cet univers une conversion en ASCII on reprend la conversion UNICODE vers => ASCII

Dans l'univers ASCII (Compilateur en Non UNICODE) ont peut convertir UTF8 en ASCII
et si l'on veut dans cet univers une conversion en UNICODE on reprend la conversion ASCII vers => UNICODE

(Voir message précédent.

A+
Dernière modification par PAPIPP le ven. 24/nov./2017 10:40, modifié 1 fois.
Il est fort peu probable que les mêmes causes ne produisent pas les mêmes effets.(Einstein)
Et en logique positive cela donne.
Il est très fortement probable que les mêmes causes produisent les mêmes effets.
PAPIPP
Messages : 534
Inscription : sam. 23/févr./2008 17:58

Re: Conversion ASCII UNICODE UTF8

Message par PAPIPP »

Bonjour à tous

Dans le premier message j’ai ajouté 2 nouvelles conversions que j’avais oublié.

Ce sont la
1) Conversion d’une chaine ASCII en Unicode dans l'univers Unicode
2) Conversion d'une chaine Unicode en ASCII dans l'univers ASCII

A+
Il est fort peu probable que les mêmes causes ne produisent pas les mêmes effets.(Einstein)
Et en logique positive cela donne.
Il est très fortement probable que les mêmes causes produisent les mêmes effets.
Avatar de l’utilisateur
Kwai chang caine
Messages : 6962
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: Conversion ASCII UNICODE UTF8

Message par Kwai chang caine »

Waouh ! je crois que tu as pensé à tout 8O
Pour l'instant je n'en ai pas besoin, mais mon petit doigt me dit que "malheureusement" ton code pourra m'être d'une grande utilité dans les mois qui suivent :|
Merci du partage 8)
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Répondre