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

PHP & Base de données Discussion :

Encodage base de données sur serveur [PostgreSQL]


Sujet :

PHP & Base de données

  1. #1
    Membre averti Avatar de cyreel
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2004
    Messages
    388
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2004
    Messages : 388
    Points : 324
    Points
    324
    Par défaut Encodage base de données sur serveur
    Bonjour à tous,
    J'ai des soucis avec ma base de données en ligne. En local ma base de données a été encodée en UTF8 et cela marche nickel pour les insertions et les affichages.

    Le seul problème est que le serveur sur lequel je doit hébergé mon application ne me permet pas de changer l'encodage de ma base de donnée et par défaut, celle-ci est en ASCII.

    Ma question est de savoir comment faire en sorte que mes infos déjà insérées en local puissent apparaitre convenablement en ligne.
    En effet, quand je fais l'export les caractères spéciaux ne sont pas bien affichés en ligne.

    Je sais que la solution idéale serait de refaire les insertion en ligne mais si je peux exporter mes données convenablement cela serait aussi cool.

    Merci de m'aider!

  2. #2
    Membre averti Avatar de onirisme
    Homme Profil pro
    Ingénieur commercial
    Inscrit en
    Novembre 2004
    Messages
    221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur commercial
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Novembre 2004
    Messages : 221
    Points : 316
    Points
    316
    Par défaut
    Bonjour,

    Tu peux utiliser iconv qui est un outil en ligne de commande qui te permettra de convertir les caractères d'un encodage vers un autre.

    ICONV

    PHP dispose également d'une bibliothèque iconv Doc PHP ICONV

    Mon Blog : http://www.openwab.com
    Développement Web : Wordpress, HTML, CSS, PHP, jQuery
    Infrastructure : Virtualisation, Stockage, Déduplication

    There are 10 types of people in the world: those who understand binary, and those who don't

  3. #3
    Membre averti Avatar de cyreel
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2004
    Messages
    388
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2004
    Messages : 388
    Points : 324
    Points
    324
    Par défaut
    Merci onirisme pour la réponse.
    Le seul ennui c'est que je doit mettre la base de donnée en ligne et je suis sur un serveur partagé. Je ne peux donc pas utiliser ICONV vu qu'il faut l'installer sur le serveur.

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    1 874
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 874
    Points : 2 890
    Points
    2 890
    Par défaut
    Avec PostgreSQL, l'encodage SQL_ASCII veut dire en fait "encodage inconnu" et c'est aux programmes qui travaillent avec la base de se débrouiller pour interpréter correctement ce qui s'y trouve, PostgreSQL considérant les contenus texte comme une suite d'octets ininterprétables.
    Il est possible de stocker de l'UTF8 dans une base déclarée en SQL_ASCII si c'est géré par le code client d'insertion et de relecture.
    Quand tu dis:
    En effet, quand je fais l'export les caractères spéciaux ne sont pas bien affichés en ligne.
    il faut voir que c'est extrêmement vague, on ne sait pas ni ce qu'il y a dans ta base comme séquence d'octets ni avec quelle fonction tu l'affiches ni si ta page web est en UTF8 ou ISO ou autre. Tous ces détails doivent être OK en même temps pour avoir les accents correctement affichés.

  5. #5
    Membre averti Avatar de cyreel
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2004
    Messages
    388
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2004
    Messages : 388
    Points : 324
    Points
    324
    Par défaut
    Merci estofilo pour la reponse.
    En fait mas base de donnée en local est en UTF8 et mon charset des pages web de l' iso-8859-1. Avant d'enregistrer mes données dans la base de données j'utilise la fonction utf8_encode() et à la lecture utf8_decode().

    En local cela marche bien mais avec les memes fonctions, le meme charset, kans j'utilise une base de donnée en SQL_ASCII j'ai des '?' partout sur mes pages quand j'exporte mes données.

    J'utilise postgresql depuis seulement 3 mois et je sais pas commet gérer ce problème.

    Une solution? je suis preneur.
    MErci

  6. #6
    Membre émérite
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    1 874
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 874
    Points : 2 890
    Points
    2 890
    Par défaut
    Citation Envoyé par cyreel Voir le message
    Merci estofilo pour la reponse.
    En local cela marche bien mais avec les memes fonctions, le meme charset, kans j'utilise une base de donnée en SQL_ASCII j'ai des '?' partout sur mes pages quand j'exporte mes données.
    Si c'est le même code php que pour accéder à la base UTF8, il devrait donner le même résultat avec une base déclarée en SQL_ASCII et contenant de l'UTF8.
    Mais les contenus sont-ils bien encodés en UTF8?
    Par exemple un caractère "é" en UTF8 a la représentation suivante en octets:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    select encode('é'::bytea, 'hex');
     encode
    --------
     c3a9
    (1 row)
    Pour ton problème il pourrait être utile de vérifier à ce niveau là quel est l'encodage réel des contenus en base, indépendamment de ce qui s'affiche sur le web.

    PS: personnellement ce que je soupçonne sur la base de ta description est que tu n'as carrément pas les accents dans ta base SQL_ASCII

  7. #7
    Membre averti Avatar de cyreel
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2004
    Messages
    388
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2004
    Messages : 388
    Points : 324
    Points
    324
    Par défaut
    Merci pour ton aide estofilo,

    Finalement pour afficher les informations sur mes pages, j'ai finalement enlevé l'utilisation de la fonction utf8_decode(); et cela marche nickel.

    Ainsi au lieu de utf8_decode($result['test']); j'affiche juste $result['test'] et cela marche bien.

    Merci pour votre aide.
    Je ne sais pas si c'est la bonne solution mais pour le moment ça marche bien.

  8. #8
    Membre averti Avatar de cyreel
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2004
    Messages
    388
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2004
    Messages : 388
    Points : 324
    Points
    324
    Par défaut
    Pr finir j'ai recrée ma base de donnée en SQL_ASCII et enlévé tout ce ki concerne le utf8.
    Maintenant ça marche bien!
    merci pour votre aide!!

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 07/06/2012, 00h06
  2. Réponses: 3
    Dernier message: 07/02/2011, 16h17
  3. [AC-2000] Partage d'une base de donnée sur serveur
    Par tibogaet dans le forum Sécurité
    Réponses: 1
    Dernier message: 17/09/2009, 09h41
  4. Connection base de données sur serveur FTP
    Par Yphon dans le forum Bases de données
    Réponses: 0
    Dernier message: 18/10/2007, 09h09
  5. [VB.NET] Connexion à une base de données sur serveur distant
    Par boulete dans le forum Windows Forms
    Réponses: 5
    Dernier message: 09/04/2006, 14h11

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