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

Delphi Discussion :

Écriture d'un CSV en UTF-8


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2017
    Messages
    344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2017
    Messages : 344
    Par défaut Écriture d'un CSV en UTF-8
    Bonjour,
    j'ai écrit avec un TStringList des chaînes dans un fichier texte CSV mais les lettres accentuées sont remplacées par des points d'interrogation dans LibreOffice Calc.
    J'ai essayé de passer les chaînes que j'ajoute au TSTringList avec la fonction utf8encode mais bizarrement même résultat.
    En ouvrant le fichier que j'ai passé par utf8encode avec Notepad++ je vois qu'il est en Ansi !
    On dirait que le TStringList.savetofile n'enregistre qu'en Ansi
    Merci de m'aider car là je ne sais plus quoi faire !
    Bien cordialement

  2. #2
    Membre Expert
    Avatar de pprem
    Homme Profil pro
    MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Inscrit en
    Juin 2013
    Messages
    1 876
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 876
    Par défaut
    Bonsoir

    Si ça s'affiche correctement sur Notepad++ l'autre chose sur laquelle tu peux agir c'est de comprendre pourquoi LibreOffice force en UTF-8 au lieu de te demander l'encodage à l'ouverture comme le fait OnlyOffice. Peut-être y a-t-il un paramètre quelque part dans Calc ?

  3. #3
    Membre très actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2017
    Messages
    344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2017
    Messages : 344
    Par défaut
    ça s'affiche correctement dans Notepad++ car il détecte l'encodage Ansi et l'affiche en Ansi
    On peut choisir l'encodage sur LibreOffice Calc mais je le veux en UTF8

  4. #4
    Membre Expert
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    Décembre 2006
    Messages
    2 523
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur TP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 523
    Par défaut
    Bonjour,

    il existe des fonctions de conversion des chaines UTF8
    Tu peux traiter le fichier issu du SaveToFile ?

    A+
    Charly

  5. #5
    Membre très actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2017
    Messages
    344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2017
    Messages : 344
    Par défaut
    j'ai essayé avec utf8encode et ansitoutf8 et avec un TStringlist ou avec la procédure sur http://delphipage.free.fr/fichiertexte.html mais c'est toujours en Ansi ! Ces fonctions n'ont aucun effet

  6. #6
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 943
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 943
    Par défaut
    Citation Envoyé par Sylvain255 Voir le message
    On dirait que le TStringList.savetofile n'enregistre qu'en Ansi
    Par défaut mais tu peux forcer l'encodage : SaveToFile('fichier.csv', TEncoding.UTF8);

  7. #7
    Membre très actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2017
    Messages
    344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2017
    Messages : 344
    Par défaut
    merci avec ça ça marche

  8. #8
    Membre Expert
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    Décembre 2006
    Messages
    2 523
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur TP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 523
    Par défaut
    Bonjour,
    tu pourrais quand même donner un exemple de ton fichier Csv, pour que je fasse des tests ? en particulier avec des anciennes versions de Delphi.

    J'avais déjà eu un problème similaire que j'avais résolu avec UTF8ToAnsi ( et l'inverse doit fonctionner ?)

    Merci
    A+
    Charly

  9. #9
    Membre très actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2017
    Messages
    344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2017
    Messages : 344
    Par défaut
    mon code est compliqué mais j'ai Delphi 10.3 et j'ai juste fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    liste.clear;
    liste.append(ansitoutf8(motavecaccents));
    liste.savetofile('fichier.csv');
    Citation Envoyé par Charly910 Voir le message
    Bonjour,
    tu pourrais quand même donner un exemple de ton fichier Csv, pour que je fasse des tests ? en particulier avec des anciennes versions de Delphi.

    J'avais déjà eu un problème similaire que j'avais résolu avec UTF8ToAnsi ( et l'inverse doit fonctionner ?)

    Merci
    A+
    Charly

  10. #10
    Membre Expert
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    Décembre 2006
    Messages
    2 523
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur TP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 523
    Par défaut
    Ok, merci je vais essayer avec D10.4

    A+
    Charly

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. fichier excell csv en UTF-8
    Par Yepazix dans le forum Excel
    Réponses: 15
    Dernier message: 27/01/2014, 00h59
  2. Réponses: 0
    Dernier message: 02/10/2012, 11h23
  3. [MySQL] Export csv Excel UTF-8
    Par spawns dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 01/08/2012, 11h39
  4. [XL-2003] Sauvegarder fichier csv en utf-8 sans BOM
    Par SpaceFrog dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 06/04/2010, 10h43
  5. Macro - Importation .csv en UTF-8
    Par alpking dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 05/08/2009, 17h08

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