IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++Builder Discussion :

Convertir de l'ASCII en Unicode


Sujet :

C++Builder

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Août 2002
    Messages
    481
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 481
    Points : 242
    Points
    242
    Par défaut Convertir de l'ASCII en Unicode
    Bonjour,
    j'ai un fichier texte enregistré en ASCII.

    Pour être utilisable, comme fichier pour un téléphone portable, il devrait
    codé en Unicode.

    J'ai bien trouvé une solution plutôt compliquée :
    l'ouvrir avec WORD et l'enregistrer ensuite avec WORD sous la
    forme d'un fichier codé en Unicode.

    Comme C++Builder XE travaille en Unicode également, existe-t-il
    une procédure pour faire cette transformation ?

    Merci d'avance

  2. #2
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 597
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 597
    Points : 25 280
    Points
    25 280
    Par défaut
    XE2, rien de plus simple, regarde le TEncoding d'un TStrings ou TStringStream
    Cela doit pouvoir se faire en quelques lignes un objet de lecture en Ansi, un objet en écriture en Unicode, le tour est joué !

    Pour les anciens BCB, il te suffit de lire le fichier via un TStringStream, de convertir le DataString dans un WideString, puis via un transtypage en PWideChar de le copier dans un TMemoryStream puis utiliser SaveToFile

    Ne pas oublier le BOM FE FF ou FF FE, selon si Big ou Little Endian

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Août 2002
    Messages
    481
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 481
    Points : 242
    Points
    242
    Par défaut
    Je vous remercie.
    J'avais fait autrement en reprenant le fichier ASCII et en y ajoutant
    l'en-tête de 2 caractères et tous les caractères '0' après chaque caractère
    du fichier ASCII.
    Le miracle est que cela a fonctionné.

    Je ne suis pas du tout habitué des TStringStream, ni des TMemoryStream .
    Ce que j'ai écrit fait 35 lignes.

    Je ne sais pas si je peux me permettre, mais pourriez vous me montrer comment faire la même chose de la façon dont vous le suggérer en partant du nom fichier texte à convertir et du nom du fichier converti ?

    Merci

  4. #4
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 597
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 597
    Points : 25 280
    Points
    25 280
    Par défaut
    Si ton fichier ne contient que de l'ASCII entre 0 et 127, ta manipulation est correcte !
    Pour les accents, cela ne fonctionnera plus !

    Tient, j'ai écrit dans ce sujet TFileStream et caractères bizarres une fonction Delphi qui écrit une chaine converti StringToWideChar, cela peut t'inspirer pour créer la fonction de conversion

    Pour TStringStream ou TMemoryStream, justement lance toi !
    Propose un code, je t'aiderais à la corriger au besoin !

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Août 2002
    Messages
    481
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 481
    Points : 242
    Points
    242
    Par défaut
    Merci,
    je vais essayer le programme que vous avez écrit pour comprendre comment
    cela fonctionne.

    En ce qui concerne les caractères accentués, j'en avais dans le fichier texte.
    Des mots tels que théâtre ou modèle. Ils ont été bien convertis. Il me semble
    que dans un octet on peut metytre tous les caractères de notre alphabet.

Discussions similaires

  1. Convertir les caractères ASCII en hexadécimal et Unicode
    Par hackoofr dans le forum Vos Contributions VBScript
    Réponses: 0
    Dernier message: 03/01/2012, 21h11
  2. [xslt][xalan] convertir caracteres en ascii
    Par bernols dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 04/05/2006, 11h24
  3. [Free Pascal] Convertir un code ASCII en entier
    Par JoseF dans le forum Free Pascal
    Réponses: 13
    Dernier message: 04/04/2006, 19h30
  4. convertir de l'arabe en unicode?
    Par l'indien dans le forum Langage
    Réponses: 5
    Dernier message: 18/03/2006, 13h37
  5. [mx2004]Convertir un code ASCII en une lettre
    Par caramel dans le forum Flash
    Réponses: 3
    Dernier message: 28/01/2004, 16h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo