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

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2017
    Messages
    337
    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 : 337
    Points : 61
    Points
    61
    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
    Points : 3 611
    Points
    3 611
    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 du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2017
    Messages
    337
    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 : 337
    Points : 61
    Points
    61
    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 345
    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 345
    Points : 3 123
    Points
    3 123
    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 du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2017
    Messages
    337
    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 : 337
    Points : 61
    Points
    61
    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 694
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 694
    Points : 13 130
    Points
    13 130
    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 du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2017
    Messages
    337
    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 : 337
    Points : 61
    Points
    61
    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 345
    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 345
    Points : 3 123
    Points
    3 123
    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 du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2017
    Messages
    337
    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 : 337
    Points : 61
    Points
    61
    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 345
    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 345
    Points : 3 123
    Points
    3 123
    Par défaut
    Ok, merci je vais essayer avec D10.4

    A+
    Charly

  11. #11
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 459
    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 459
    Points : 24 873
    Points
    24 873
    Par défaut
    Je vais ajouter une précision, SaveToFile('fichier.csv', TEncoding.UTF8); ajoute un BOM en début de Fichier régit par la propriété WriteBOM
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

+ 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