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

Langage PHP Discussion :

chargement fichier et caractères spéciaux


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Avatar de xenos
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    400
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 400
    Par défaut chargement fichier et caractères spéciaux
    Bonjour,

    Je charge un fichier .csv codé en ANSI, qui se trouve en annexe.

    Pour contrer les caractères spéciaux j'utilise utf8_decode :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $nace = fopen("nace/nace_fr.csv", "r");
     
    while (!feof($nace))
    {
    	//On utilise urt8_decode pour que tous les caractères spéciaux (é, è, ...) soient correctement gérés
    	$nace_complet = $nace_complet . utf8_decode(fgets($nace));
    }

    Le problème est que même avec cette fonction de nombreux caractères ne sont pas pris en compte : ' Ś ć ł ą ż ... Ils sont alors remplacé par des ? (point d'interrogation) lorsque je les affiche ou que je les enregistre dans la base de données ... :s

    J'ai aussi essayé d'utiliser un htmlentities et un htmlspecialchars, mais en les utilisant, rien ne s'affiche et rien ne s'enregistre dans la base de données ... :s

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $nace = fopen("nace/nace_fr.csv", "r");
     
    while (!feof($nace))
    {
    	//On utilise urt8_decode pour que tous les caractères spéciaux (é, è, ...) soient correctement gérés
    	$nace_complet = $nace_complet . htmlentities(fgets($nace));
    }

    En résumé : Comment puis je charger le fichier .csv sans que les caractères spéciaux ne soient remplacés par des points d'interrogation ?

    D'avance merci pour vos réponses.



    xenos
    Fichiers attachés Fichiers attachés

  2. #2
    Membre Expert
    Avatar de trotters213
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 571
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 571
    Par défaut

    Tu peux forcer dans tes entêtes via la fonction header l'encodage de la page.
    De même, ta base de données est bien en utf-8 elle aussi ?

  3. #3
    Membre éclairé
    Avatar de xenos
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    400
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 400
    Par défaut
    Merci de ta réponse trotters213.

    Citation Envoyé par trotters213 Voir le message
    Tu peux forcer dans tes entêtes via la fonction header l'encodage de la page.
    J'ai donc rajouté à la première ligne du fichier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php	header('Content-Type: text/html; charset=utf-8');
    Citation Envoyé par trotters213 Voir le message
    De même, ta base de données est bien en utf-8 elle aussi ?
    J'ai modifié l'ensemble des colonnes, de la table de réception, au format utf8_bin. Vu que ces colonnes devront réceptionner des mots dans de nombreuses langues.

    Malgré toutes ces modifications le problème persiste ...

  4. #4
    Membre Expert
    Avatar de trotters213
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 571
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 571
    Par défaut

    Je n'avais pas relever mais utf8_decode (et respectivement utf8_encode) permet de passer de l'UTF-8 en ISO-8859-1 (et respectivement de l'ISO_8859-1 en UTF-8) or tes caractères spéciaux ne sont pas en ISO-8859-1.

    Tu as essayé de forcer le type de ta page en utf-8, ta base en utf-8 et lors de l'enregistrement de tes caractères spéciaux dans la BD, tu ne fais rien de spécial et pareil pour la lecture?
    En gros tu insères bêtement ton fichier ligne par ligne dans ta BD sans utiliser de utf8_encode ni de htmlentities. Et lorsque tu fais l'affichage des valeurs de cette base tu ne fais rien de spécial sinon te débrouiller pour tout avoir en utf-8 (les pages et la base).

  5. #5
    Membre éclairé
    Avatar de xenos
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    400
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 400
    Par défaut
    Merci pour ton aide trotters213 !

    Ca fonctionne parfaitement !

    Bon développement à tous.



    xenos

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 17/10/2006, 18h27
  2. [FLASH] Pb de caractères quand chargement fichier .txt
    Par origami-graphics dans le forum Flash
    Réponses: 1
    Dernier message: 12/02/2006, 14h53
  3. chargement fichier bizarre
    Par jiceher dans le forum C++
    Réponses: 14
    Dernier message: 28/08/2005, 14h52
  4. Chargement fichier volumineux
    Par kirsoul dans le forum Installation
    Réponses: 2
    Dernier message: 26/07/2005, 14h53
  5. [Plugin][Jar] Chargement fichier de conf d'un jar
    Par vberetti dans le forum Eclipse Platform
    Réponses: 2
    Dernier message: 29/06/2005, 14h03

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