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 15/01/2008, 11h38   #1
Candidat au titre de Membre du Club
 
Inscription : novembre 2007
Messages : 41
Détails du profil
Informations forums :
Inscription : novembre 2007
Messages : 41
Points : 13
Points : 13
Par défaut problème d'encodage Oracle <-> PHP

Bonjour, je n'arrive pas à résoudre un problème d'encodage dans le resultat d'une requete SQL. Les accents disparaissent !
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
 
  <head>
        <meta http-equiv="Content-Type" content="text/html; utf-8" />
        <meta http-equiv="Content-Script-Type" content="text/javascript" />
        <meta http-equiv="Content-Style-Type" content="text/css" />
 
        <title>INDEX</title>
 
        <script type="text/javascript" src="defaut.js"></script>
 
        <link rel="stylesheet" type="text/css" href="defaut.css" />
  </head>
 
 
  <body>
  <?php
 
echo aff();
 
 
function aff()
{
    include("outils_connexionBD.php");
    $cnx=connexionBDD();
    $sql="SELECT ....";
 
    $statement=oci_parse($cnx, $sql);
    $resultats=oci_execute($statement);
    while($d=oci_fetch_array( $statement ))
        $retour.=htmlentities( $d[0], ENT_QUOTES);
 
    deconnexionBDD($cnx);
 
    return $retour ;
}
?>
 
  </body>
</html>
- L'affichage du resultat est sans accent.
- Le resultat dans le code source est sans accent.
- L'encodage du text dans cette page est utf-8
- Le type de la donnée est VARCHAR2, qui ici est en WE8MSWIN1252 (NLS_CHARACTERSET)
- Un mb_detect_encoding($d[0]) me donne ASCII (en contradiction avec la ligne précedente)
-Un mb_convert_encoding($d[0], "utf-8", "WE8MSWIN1252") retourn une erreur
-Un mb_convert_encoding($d[0], "utf-8") n'y change rien

Je ne vois pas ce que je peux faire de plus.

Quelqu'un aurait une idée ?
merci
matoon est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/01/2008, 14h27   #2
Candidat au titre de Membre du Club
 
Inscription : novembre 2007
Messages : 41
Détails du profil
Informations forums :
Inscription : novembre 2007
Messages : 41
Points : 13
Points : 13
la solution :
$cnx = oci_connect(utilisateur,motDePasse,BD,leCharset)

avec leCharset = NLS_CHARACTERSET de oracle

matoon est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/11/2010, 17h36   #3
Membre habitué
 
Luis
Inscription : avril 2006
Messages : 436
Détails du profil
Informations personnelles :
Nom : Luis

Informations forums :
Inscription : avril 2006
Messages : 436
Points : 119
Points : 119
Salut a tous
j'ai le meme probleme et j'ai appliqué ce workaround...

Code :
$conexion = oci_connect('user', 'passw', 'db','UTF8');
et dans la page php j'ai ceci:

Code :
<meta http-equiv='Content-Type' content='text/html; charset=UTF-8'>
ça sort comme ceci sur l'ecran:

Ciencias y biologÃ*a

Normalement ça devrait etre: biología
Une idée?
ldiaz est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h56.


 
 
 
 
Partenaires

Hébergement Web