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 :

Encoding / character set avec PHP / Postgres


Sujet :

PHP & Base de données

  1. #1
    Membre régulier
    Inscrit en
    Novembre 2005
    Messages
    188
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 188
    Points : 86
    Points
    86
    Par défaut Encoding / character set avec PHP / Postgres
    Salut,
    j'ai un soucis avec l'affichage des données qui viennent d'une base Postgres. La base est en UTF8 d'apres moi. Si vous connaissez une autre méthode pour confirmer, je suis preneur. La commande "\list" m'affiche UTF8 comme encoding.
    En ligne de commande, dans postgres, j'affiche le caractère ascii d'un "É". La requete me retourne bien le code 201, ce qui est correct.

    select ref, ascii(substring(ref,5)),substring(ref,5) from table where id = 32676;
    ref ascii substring
    BIOLÉ 201 É
    (1 row)

    Ensuite, j'ai une page PHP qui tourne sur un serveur apache sous windows, et qui fait ce meme select et affiche le résultat. Le fichier php est encodé en UTF-8, et j'ai ces 4 lignes dedans :

    mb_internal_encoding('UTF-8');
    mb_http_output('UTF-8');
    mb_http_input('UTF-8');
    mb_regex_encoding('UTF-8');

    Pour la connection à postgres, je fais pg_pconnect puis pg_query. Rien de plus.

    Sur la page web, le "É" est correctement affiché. Par contre, lorsque j'affiche le code ASCII de ce "É", il est indiqué 195 - 137 au lieu de 201. D'où pourrait provenir cette transformation du code ASCII d'apres vous ? et pourquoi l'accent est il correctement affiché si le code ASCII est modifié ?

    a force de bricoler, j'ai essayé de jouer avec la fonction pg_set_client_encoding. Si je set l'encoding en UTF8, ca ne change rien.
    Si je le set à WIN1252 ou LATIN1, alors le code ASCII affiché est bien le 201, mais alors la page n'affiche plus "É" mais le point d'interrogation dans un losange noir �

    des idées ?
    merci

  2. #2
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 235
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 235
    Points : 15 532
    Points
    15 532
    Par défaut
    Citation Envoyé par benkunz Voir le message
    lorsque j'affiche le code ASCII de ce "É", il est indiqué 195 - 137
    ceci est correct, dans l'encodage utf-8, le caractère "É" est codé sur 2 octets.

  3. #3
    Membre régulier
    Inscrit en
    Novembre 2005
    Messages
    188
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 188
    Points : 86
    Points
    86
    Par défaut
    j'ai un doute quand meme, ou alors quelque chose m'échappe...
    ici (https://www.ascii-code.com/), il est indiqué que le code est le 201, pas le 195+137

  4. #4
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 235
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 235
    Points : 15 532
    Points
    15 532
    Par défaut
    en haut de la page, il y a indiqué que c'est l'encodage Windows-1252 qui est présenté sur cette page.

    vous pouvez aussi vous aider de cette page pour faire des conversion d'encodage :
    https://convertcodes.com/unicode-con...de-decode-utf/

Discussions similaires

  1. Réponses: 1
    Dernier message: 07/03/2021, 19h51
  2. Quel SGBD avec PHP : MySQL ou Postgres
    Par charliejo dans le forum Requêtes
    Réponses: 6
    Dernier message: 25/01/2006, 12h13
  3. [débutant] choix de postgre avec php / migration
    Par bilbon.S dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 23/03/2004, 14h05
  4. Problème avec accents et CHARACTER SET ISO8859_1
    Par kinda dans le forum InterBase
    Réponses: 13
    Dernier message: 30/10/2003, 15h49

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