PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV 2025 → HExporteCSV en UTF 8
HExporteCSV en UTF 8
Iniciado por chp, 03,jun. 2020 14:00 - 4 respuestas
Miembro registrado
35 mensajes
Publicado el 03,junio 2020 - 14:00
bonjour,

comment puis je faire pour générer un HExporteCSV de ma table au format UTF8, il semble que par défaut le fichier soit en UNICODE ?

Merci
Miembro registrado
92 mensajes
Publicado el 03,junio 2020 - 15:51
Bonjour

L'unicode est décrit dans le type de chaque rubrique de la table. Ce n'est donc pas la table qui est unicode mais ses rubriques.
Pour changer en UTF8, il y a chaineVersUTF8 (à faire sur chaque rubrique de chaque enregistrement donc)

--
Bon dev.

Patrick Lalemand
Des outils pour développeurs sur https://www.lapalys.ca
Miembro registrado
35 mensajes
Publicado el 03,junio 2020 - 16:20
Merci pour votre réponse,

j'avais tester cette solution sans succès.

Je fais un HExporteCSV => mon csv (en unicode) ressemble à

Titre1,Titre2
"Pdt1","44.50€"
......

maintenant je créé une boucle pour lire et créer le csv à la volée avec chaineversutf8, j'obtiens un ficher qui à l'ouverture est du type
T<0>i<0>t<0>...........

idem si je fait un fchargetexte puis chaineversutf8 puis sauvegarde
Miembro registrado
92 mensajes
Publicado el 03,junio 2020 - 17:10
L'unicode est codé sur 2 octets, l'UTF8 sur un seul (comme l'ASCII et l'ANSI). La transformation d'un Unicode en UFT8 donnera donc des 0 entre les lettres (le 0 étant le code ascii du premier octes des 2). Pour être sur, vous pouvez aller sur des sites qui transforment l'unicode/l'ansi en UTF8.

Dans votre cas, transformez d'abord UnicodeVersAnsi avant ChaineVersUTF8.

--
Bon dev.

Patrick Lalemand
Des outils pour développeurs sur https://www.lapalys.ca
Miembro registrado
35 mensajes
Publicado el 04,junio 2020 - 11:24
Merci, à force de chercher et avec votre explication j'y suis arrivé

voici le code de test si cela peut aider

chemin est une chaîne = fRepExe()+"\pdt.csv"
sCheminUTF8 est une chaîne = fRepExe()+"\pdt_utf8.csv"

HExécuteRequête(REQ_CRON_Produits,hRequêteDéfaut)
HExporteCSV(REQ_CRON_Produits,chemin,hExpCreation)

MonBuffer est un Buffer
MonBuffer = fChargeTexte(chemin)
MaChaîne est une chaîne UNICODE
MaChaîne = MonBuffer

ResOuverture est un entier =fOuvre(sCheminUTF8,foCréation)

resultat = ChaîneVersUTF8(MaChaîne)
fEcrit(ResOuverture,resultat)
fFerme(ResOuverture)