Pb de caractere accentue avec Export en CSV

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Pb de caractere accentue avec Export en CSV

Re: Pb de caractere accentue avec Export en CSV

par Drum » 26 juil. 2010, 11:28

Merci pour ces indications de code. Du coup, cela fait pas mal de modifs a apporter aux differents sources ! :oops:
Pour le moment, afin de ''resoudre'' mon ''probleme'', je re-enregistre sur lui-meme le fichier csv au format ANSI via le bloc note et... la lecture des caracteres accentues avec Gnumeric se fait bien par exemple. ca fait un peu ''a l arrache'' mais c est ''exploitable'' :oops:
il est certain qu un fputcsv aurait ete plus ''propre'' mais je m y attelerai dans un deuxieme temps :wink:
Encore merci

Re: Pb de caractere accentue avec Export en CSV

par AB » 24 juil. 2010, 19:02

Si ma memoire est exacte, je crois que htmlentities avait resolu quelques problemes de caracteres (encore !) mais en Bdd. le re-affichage dans les formulaires se faisait mal. D ou le htmlentities d un cote et le html_entity_decode de l autre :oops:
C'est pas la bonne méthode d'utiliser htmlentities pour résoudre des problèmes d'encodage. Cela te poseras des pb si tu dois faire des recherche en bdd. Les problèmes d'encodage doivent être résolus en étant cohérent et en signalant le bon encodage tout au long du script. Lis attentivement le tuto sur l'utf-8.

Tu dois commencer tes pages php avec
header('Content-Type: text/html; charset=UTF-8');
Juste après ta connexion à la bdd et avant les requêtes, faire
mysql_query("SET NAMES 'utf8'");
Et évidemment tes tables doivent avoir l'interclassement utf8_bin ou utf8_general_ci (le premier étant sensible à la casse, le second ne l'étant pas)

par contre, dans htmlentities, comme le 3 eme parametre etait optionnel, c est pour cette raison que je ne le mettais pas #-o
Merci de ton aide.
a++


Il est effectivement optionnel mais si tu ne l'indiques pas, par défaut c'est l'encodage ISO qui est utilisé et non pas l'UTF-8

Re: Pb de caractere accentue avec Export en CSV

par Drum » 24 juil. 2010, 18:20

Essaies
header("Content-Transfer-Encoding: text/csv\n"); 
.../...
Merci AB pour le lien sur Utf8, j irai y jeter un coup d oeil :wink: Par contre l essai dont tu parles ne change rien, je rencontre toujours le meme probleme. :x
Si ma memoire est exacte, je crois que htmlentities avait resolu quelques problemes de caracteres (encore !) mais en Bdd. le re-affichage dans les formulaires se faisait mal. D ou le htmlentities d un cote et le html_entity_decode de l autre :oops:
par contre, dans htmlentities, comme le 3 eme parametre etait optionnel, c est pour cette raison que je ne le mettais pas #-o
Merci de ton aide.
a++

Re: Pb de caractere accentue avec Export en CSV

par AB » 24 juil. 2010, 17:02

Essaies
header("Content-Transfer-Encoding: text/csv\n"); 
En tous cas je n'ai aucun souci pour faire télécharger depuis une page php en utf-8, des fichiers csv générés avec fputcsv (et vérifiés ensuite sous excel) depuis une base de données codée en utf-8, pas plus que des fihciers xls créés directement dans excel.

Ton pb doit venir de la création de tes fichiers csv, ou de l'enregistrement de tes données en bdd, mais pas du téléchargement lui-même...

Pourquoi utilises-tu htmlentities() pour rentrer tes données en bdd ?

Si tu utilises htmlentities() et html_entity_decode() il faut remplir le troisième paramètre de ces fonctions pour indiquer le charset utf-8 puisque tu travaille en utf-8 (encore que le plus simple serait de ne pas utiliser ces fonctions)

Au passage si nécessaire un petit tuto sur l'utf8

Re: Pb de caractere accentue avec Export en CSV

par Drum » 24 juil. 2010, 11:35

Un grand Merci pour cette information. c est bon a savoir. Mais alors... je me demande comment convertir Utf-8 en ansi ?
Moi qui ai change tous les interclassements des champs Latin1_german2_ci en Utf8_bin dans les tables, pensant que le ''probleme'' pouvait venir de la... :shock:
Bref, comment recuperer en php mon fichier exporte avec l accentuation ? l interclassement Utf8_unicode_ci ne serait il pas mieux ''interprete" ? :oops:
Merci.
a++

Re: Pb de caractere accentue avec Export en CSV

par stealth35 » 23 juil. 2010, 23:37

Microsoft Office ne lit pas l'UTF-8 :wink: ca marche que en ANSI

Re: Pb de caractere accentue avec Export en CSV

par Drum » 23 juil. 2010, 22:49

Re-bonsoir !
le fichier peut etre lu
soit par un tableur (Excel, Gnumeric) a des fins de controle et modifications
soit par un traitement de texte (Word, Abiword) a des fins de mailing, etiquettes etc...
a++

Re: Pb de caractere accentue avec Export en CSV

par stealth35 » 23 juil. 2010, 22:27

c'est pour le lire sous Excel après ?

Re: Pb de caractere accentue avec Export en CSV

par Drum » 23 juil. 2010, 22:10

Bonsoir,
une page Html propose de traiter les tables a l ''exportation'', listees dans un tableau Html.
<td>
           <a href="./exportation/download.php?file='.$tab[$i+1].'.csv"> <img 	border="0" src="../image/table.png" width="23" height="20" alt="'.$tab[$i+1].'.csv" /></a>
</td>
le lien au survol donne :
http:// 127.0.0.1/exportation/download.php?file=mailing.csv

le source download.php
<?php

$file = $_GET["file"]; 
download($file); 
function download($file, $name = false, $type = false, $down = true) { 
if(!file_exists($file)){ 
print "error"; 
exit; 
} 
if(!$name) $name = basename($file); 
if($down) $type = "application/force-download"; 
else if(!$type) $type = "application/download"; 
$disp = $down ? "attachment" : "inline"; 
#header ("HTTP/1.0 204 No Content" ); 
header("Content-disposition: ".$disp."; filename=$name"); 
header("Content-length: ".filesize($file)); 
header("Content-type: ".$type); 
header("Connection: close"); 


header("Expires: 0"); 

readfile($file); 
exit; 
} 
?>
j espere donner les elements attendus ?
Merci pour les reponses a cette ''enigme'' !
a++

Re: Pb de caractere accentue avec Export en CSV

par telnes » 23 juil. 2010, 16:37

bonjour

comment fait ton export ?

++

Pb de caractere accentue avec Export en CSV

par Drum » 23 juil. 2010, 11:34

Bonjour,
Cela fait quelques temps que je n arrive pas a resoudre un probleme d accentuation de caracteres lors de la conversion vers un fichier CSV.
En restant dans les formulaires (charset Utf-8), ils sont correctement affiches, tant en creation, qu en mise a jour de fiches dans le navigateur. de Bdd vers Html avec html_entity_decode et de Hyml vers Bdd avec htmlentities

Le fichier csv lui, contient des é au lieu de é, à au lieu de à

Comme cet export CSV peut servir a etablir un mailing, les caracteres doivent absolument rester accentues !
Si quelqu un a une idee ? :priere:
Merci.
a++