Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & Oracle
PHP & Oracle Forum d'entraide sur Oracle avec PHP. Avant de poster -> FAQ Oracle et Cours Oracle
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 11/08/2006, 10h34   #1
Invité de passage
 
Inscription : août 2006
Messages : 9
Détails du profil
Informations personnelles :
Âge : 30

Informations forums :
Inscription : août 2006
Messages : 9
Points : 4
Points : 4
Par défaut afficher correctement les accents? (ou 'charset hell'!)

Bonjour,

Je ne sais point si mon problème est spécifique a mysql, oracle, php ou leur intégration, ce forum (php+sgbd) me paraissait le plus indique, toutefois si je me trompe veuillez m'excuser, essayons d'être efficaces:

Le problème, en résume
J'ai des bases de donnes sur le charset iso-8859-1, avec des accents et mon script en php affiche les accents comme des caractères différents (un Z accentué a la place du é, etc)

Le problème, en détail
J'ai un site que doit se connecter a deux bases de donnes (une sur oracle, autre sur mysql), les deux bases sont sur le charset ISO-8859-1 (enfin oracle l'intitule FRENCH_FRANCE.WE8ISO8859P1 mais c'est la même chose), je n'ai pas le droit de changer le charset ou toucher a les bases d'une manière quelconque (fichier de conf, ou autre) je ne peux QUE faire des requêtes.

les accents sur la base mysql apparaissent sur ma page comme des caractères étranges (‰ etc), les accents sur ma base oracle apparaissent sur la page comme des interrogations (toujours).

ce que je sait déjà (depuis mes recherches sur google, ce forum, les tutoriels et facs etc.)
  • nous pouvons faire un document xhtml indiquer son propre charset avec les lignes suivantes ( la premier ligne en début de fichier la deuxième dans la session "head", et CHARSET étant le charset souhaité: iso-8859-1, utf-8, etc):
    Code :
    <?xml version="1.0" encoding="CHARSET"?>... <meta http-equiv="Content-type" content="text/html; charset=CHARSET" />
  • nous pouvons faire le serveur apache identifier le charset du document qu'il envoi en mettant le code suivant dans .htaccess (j'ai les droits pour cela et j'ai vérifié les headers pour voir que cela marche, CHARSET étant les mêmes charset d'avant):
    Code :
    AddDefaultCharset CHARSET
  • nous pouvons changer le charset de php avec le code suivant (et changer la locale si besoin avec setlocale CHARSET restant les mêmes)
    Code :
    ini_set('default_charset', 'CHARSET');
  • nous pouvons informer a mysql qui nous voulons qu'il convertisse ses messages a un charset avant de les envoyer avec la query suivante( CHARSET étant cette fois-ci : iso88591, utf8, etc, sans hyphen):
    Code :
    "SET CHARACTER SET 'CHARSET'"
  • nous pouvons convertir les caractères accentues en entités html en utilisant htmlentities ou mb_convert_encoding

mes outils, dans le cas ou cela changerai des choses
  • php (5.1.2)
  • MDB2 (2.2.0) (module a PEAR pour abstraire les SGBD)
  • mysql (je n'ai point l'information de numéro de version un moyen de le demander par query?)
  • oracle (je n'ai point l'information de numéro de version un moyen de le demander par query?)
  • apache (2.0.55)
  • ubuntu drappy drake pour apache/php/mon travail en soi
  • windows 2003 server contient oracle
  • windows xp contient mysql
  • emacs 21 :^)

ce que j'ai essaye, déjà en sachant la liste de choses ici haut
  • mettre la page en iso-8859-1
  • mettre la page en utf-8 et convertit tout en utf-8
  • ne pas convertir, informer a la base que je suis sur utf-8 et mettre la page sur utf-8
  • des variantes de ce trois dernières en utilisant htmlentities ou mb_convert_encoding

aucune victoire, j'ai toujours de la poubelle visuel a la place des accents, poubelle que certes change entre une approche et autre mais qui est toujours de la poubelle.

en vous remerciant d'avance votre temps d'avoir lu ce message,

malk'zameth
malk.zameth est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/08/2006, 01h27   #2
Membre à l'essai
 
Homme Alexis
Inscription : août 2006
Messages : 18
Détails du profil
Informations personnelles :
Nom : Homme Alexis
Âge : 29
Localisation : France

Informations forums :
Inscription : août 2006
Messages : 18
Points : 20
Points : 20
Envoyer un message via MSN à slyderkiller
je voi ton probleme mais arive pas a capter dans quel ordre enfin bref essaye ces fonction en php il y en a une des 2 qui va allé pour toi .

htmlentities() ou l'inverse html_entity_decode()
slyderkiller est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/08/2006, 09h03   #3
Invité de passage
 
Inscription : août 2006
Messages : 9
Détails du profil
Informations personnelles :
Âge : 30

Informations forums :
Inscription : août 2006
Messages : 9
Points : 4
Points : 4
Citation:
Envoyé par malk.zameth
ce que je sait déjà (depuis mes recherches sur google, ce forum, les tutoriels et facs etc.)
...
  • ...
  • nous pouvons convertir les caractères accentues en entités html en utilisant htmlentities ou mb_convert_encoding
...
aucune victoire,
...
j'ai essaye d'utiliser htmlentities(), mais il me donne des entités qui représentent les caractères poubelles ! ce qui est encore plus bizarre !

cela ne serait point le cas d'utiliser html_entity_decode(), car je n'ai pas d'entité si je n'utilise pas htmlentities ou mb_convert_encoding!

enfin, merci beaucoup quand même d'avoir répondu! :)
malk.zameth est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/08/2006, 11h11   #4
Rédacteur
 
Avatar de wamania
 
Développeur Web
Inscription : juillet 2003
Messages : 676
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : juillet 2003
Messages : 676
Points : 678
Points : 678
Citation:
les accents sur la base mysql apparaissent sur ma page comme des caractères étranges (&permil; etc), les accents sur ma base oracle apparaissent sur la page comme des interrogations (toujours).
A quel niveau?
Sur la page, dans le source HTML, sur un var_dump du résultat de la requete?
En gros, c'est un pb d'affichage ou ça vient des BDD?
__________________
Articles sur developpez.com
- Gestion des exceptions avec PHP5
- Chiffrement et hash en PHP contre l'attaque Man in the middle
- Aedituus - Espace membre sécurisé en PHP5

Lithium : ORM ActiveRecord PHP5 extrêmement léger
wamania est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/08/2006, 11h26   #5
Invité de passage
 
Inscription : août 2006
Messages : 9
Détails du profil
Informations personnelles :
Âge : 30

Informations forums :
Inscription : août 2006
Messages : 9
Points : 4
Points : 4
Citation:
Envoyé par wamania
A quel niveau?
Sur la page, dans le source HTML, sur un var_dump du résultat de la requete?
En gros, c'est un pb d'affichage ou ça vient des BDD?
qui ce soit un var_dump (sur le browser ou en ligne de commande),
ou sur la source, le problème reste le même, ma supposition a donc pointé sur le bdd, mais quand j'ai dit au bdd de "parler en utf-8" cela ma cause le même problème avec des caractères poubelles différents.
:(
malk.zameth est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/08/2006, 11h28   #6
Rédacteur
 
Avatar de wamania
 
Développeur Web
Inscription : juillet 2003
Messages : 676
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : juillet 2003
Messages : 676
Points : 678
Points : 678
Juste une supposition, tes textes n'ont pas été insérés avec un mauvais charset?
Car si c'est le cas, y a rien à faire, ton texte contient des ? et autres, et c'est "normal", c'est ce qu'il contient.

ça m'est déjà arrivé, y a plus qu'a resaisir tout
__________________
Articles sur developpez.com
- Gestion des exceptions avec PHP5
- Chiffrement et hash en PHP contre l'attaque Man in the middle
- Aedituus - Espace membre sécurisé en PHP5

Lithium : ORM ActiveRecord PHP5 extrêmement léger
wamania est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/08/2006, 11h32   #7
Invité de passage
 
Inscription : août 2006
Messages : 9
Détails du profil
Informations personnelles :
Âge : 30

Informations forums :
Inscription : août 2006
Messages : 9
Points : 4
Points : 4
j'y avais songé a cela,
mais hélas non, je fais l'interface web pour un programme existant, (e.g. je connecte a la base du programme directement avec un site en php), le programme lui même arrive a avoir les caractères sans le moindre problème!
malk.zameth est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 05h05.


 
 
 
 
Partenaires

Hébergement Web