Bonjour,

après avoir parcouru plusieurs forum, dont le votre, je me tourne vers vous.

je réalise un site via indexhibit vu sa facilité de prise en main et en raison de mes faibles connaissances en informatique. A l'heure actuelle, il n'est pas envisageable de changer de CMS vu le temps déjà consacré au site.

A l'affichage des pages sur les différents navigateurs, les accents sont transformés par :

é , à , ô , â , î , è , ê

Je me demande si le problème vient de l'information fournie par le serveur sur lequel je n'ai pas de prise à ma connaissance. En consultant plusieurs forums spécialisés, j'arrive au commentaire suivant : "Si la page affiche des caractères de ce type : "é", "î", "Ã", ... => Les données ont été enregistrées au format UTF-8, et le navigateur les affiche en pensant avoir affaire à de l'ISO"

La personne qui se charge du serveur m'indique que la base de données est bien en UTF-8.

Et il me semble avoir correctement déclaré l'encodage "utf-8" dans la balise "meta"

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns='http://www.w3.org/1999/xhtml' xml:lang='en' lang='en'>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=utf-8'/>

<title><%title%> : <%obj_name%></title>

<link rel='stylesheet' href='<%baseurl%><%basename%>/site/<%obj_theme%>/style.css' type='text/css' />
<!--[if lte IE 6]>
<link rel='stylesheet' href='<%baseurl%><%basename%>/site/<%obj_theme%>/ie.css' type='text/css' />
<![endif]-->
<plug:front_lib_css />
<plug:front_dyn_css />
<script type='text/javascript' src='<%baseurl%><%basename%>/site/js/jquery.js'></script>
<script type='text/javascript' src='<%baseurl%><%basename%>/site/js/cookie.js'></script>
<script type='text/javascript' src='<%baseurl%><%basename%>/site/js/expandingMenus.js' ></script>
<plug:front_lib_js />
<script type='text/javascript'>
path = '<%baseurl%>/files/gimgs/';

$(document).ready(function()
{
setTimeout('move_up()', 1);
expandingMenu(0);
expandingMenu(1);
expandingMenu(2);
expandingMenu(3);
expandingMenu(4);
expandingMenu(5);
expandingMenu(6);
expandingMenu(7);
expandingMenu(8);
expandingMenu(9);
expandingMenu(10);

}); 
</script>
<plug:front_dyn_js />
<plug:backgrounder color='<%color%>', img='<%bgimg%>', tile='<%tiling%>' />
</head>

<body class='section-<%section_id%>'>
<div id='menu'>
<div class='container'>

<%obj_itop%>
<plug:front_index />
<%obj_ibot%>

<!-- you must provide a link to Indexhibit on your site someplace - thank you -->
<ul>
<li>built with <a href='http://www.indexhibit.org/'>indexhibit</a></li>
</ul>

</div>	
</div>	

<div id='content'>
<div class='container'>

<!-- text and image -->
<plug:front_exhibit />
<!-- end text and image -->

</div>
</div>

</body>
</html>


j'espère ne pas vous importuner avec une énième question sur un problème de codage en UTF-8 mais je suis aujourd'hui dans une impasse.

merci
Le meta n'est qu'une indication, trop souvent occultée par les en-têtes HTTP.

Deux possibilités, à ce niveau:
- vérifier que la connexion (pas la DB, mais la connexion) soit bien en UTF-8, via une commande SQL
SET NAMES "utf8";
directement après la connexion.
- vérifier que la page soit bien envoyée avec des en-têtes corrects (même content-type que dans le meta).

Testes d'abord la première solution, puis la seconde au besoin.

Vérifies également, sait-on jamais, via ton navigateur quel est l'encodage réel qu'il prend en compte. Sous la plupart des navigos, Affichage > Encodage. Places bien à "Automatique", et joues au besoin avec pour déterminer quel est l'encodage de la page (ce qui te permet en cas d'erreur de déduire celui des données : si page reçue en UTF-8, alors données compris en ISO, et vice-versa).
en entrant la commande SET NAMES "utf8"; (en espérant avoir rentré la commande au bon endroit) j'obtiens le message suivant:

Commande : SET NAMES "utf8"
Réponse : 500 SET not understood

aprèa la connexion, j'obtiens

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns='http://www.w3.org/1999/xhtml' xml:lang='en' lang='en'>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=utf-8'/>

<title>la Tuffière . Corpataux : nb.arch</title>

<link rel='stylesheet' href='http://www.nbarch.com/ndxz-studio/site/stylenbarch/style.css' type='text/css' />
<!--[if lte IE 6]>
<link rel='stylesheet' href='http://www.nbarch.com/ndxz-studio/site/stylenbarch/ie.css' type='text/css' />
<![endif]-->

<style type='text/css'>
#img-container p { margin-bottom: 18px; }
#img-container p span { line-height: 18px; }
</style>

<script type='text/javascript' src='http://www.nbarch.com/ndxz-studio/site/js/jquery.js'></script>

<script type='text/javascript' src='http://www.nbarch.com/ndxz-studio/site/js/cookie.js'></script>
<script type='text/javascript' src='http://www.nbarch.com/ndxz-studio/site/js/expandingMenus.js' ></script>

<script type='text/javascript'>
path = 'http://www.nbarch.com/files/gimgs/';

$(document).ready(function()
{
setTimeout('move_up()', 1);
expandingMenu(0);
expandingMenu(1);
expandingMenu(2);
expandingMenu(3);
expandingMenu(4);
expandingMenu(5);
expandingMenu(6);
expandingMenu(7);
expandingMenu(8);
expandingMenu(9);
expandingMenu(10);

}); 
</script>


</head>

<body class='section-4'>
<div id='menu'>
<div class='container'>

<p><a href="http://www.nbarch.com"><FONT SIZE=5>NB.ARCH</FONT></a><br />

</p>
<ul>
<li class='section-title'>informations</li>
<li><a href='http://www.nbarch.com/index.php?/contacts/' onclick="do_click();">contacts</a></li>
</ul>




<!-- you must provide a link to Indexhibit on your site someplace - thank you -->
<ul>
<li>built with <a href='http://www.indexhibit.org/'>indexhibit</a></li>
</ul>

</div>	
</div>	

<div id='content'>
<div class='container'>

<!-- text and image -->
<p><strong><u>LA TUFFIÈRE</u></strong></p>

<p>bâtiment communal<br />
commune de Corpataux-Magnedens - canton de Fribourg - 2003 - 06<br />
avec 2b architectes</p>

<p>mandat d'études parallèles sur présélection , projet lauréat<br />
</p>
<div class='cl'><!-- --></div>
<div id='img-container'>

<p><img src='http://www.nbarch.com/files/gimgs/6_corpatauxexterieur42barchitectes_v2.jpg' alt='tous droits réservés' /><br />
<span>crédit - 2b architectes : tous droits réservés</span>
</p>

<p><img src='http://www.nbarch.com/files/gimgs/6_corpatauxexterieur3thomas-jantscher_v2.jpg' alt='tous droits réservés' /><br />
<span>crédit - Thomas Jantscher : tous droits réservés</span>
</p>

<p><img src='http://www.nbarch.com/files/gimgs/6_corpatauxexterieur1thomas-jantscher_v2.jpg' alt='tous droits réservés' /><br />

<span>crédit - Thomas Jantscher : tous droits réservés</span>
</p>

<p><img src='http://www.nbarch.com/files/gimgs/6_corpatauxexterieur2thomas-jantscher_v2.jpg' alt='tous droits réservés' /><br />
<span>crédit - Thomas Jantscher : tous droits réservés</span>
</p>

<p><img src='http://www.nbarch.com/files/gimgs/6_corpatauxinterieur3thomas-jantscher_v2.jpg' alt='tous droits réservés' /><br />
<span>crédit - Thomas Jantscher : tous droits réservés</span>
</p>

<p><img src='http://www.nbarch.com/files/gimgs/6_corpatauxinterieur2thomas-jantscher_v2.jpg' alt='tous droits réservés' /><br />
<span>crédit - Thomas Jantscher : tous droits réservés</span>

</p>

<p><img src='http://www.nbarch.com/files/gimgs/6_corpatauxinterieur4thomas-jantscher_v2.jpg' alt='tous droits réservés' /><br />
<span>crédit - Thomas Jantscher : tous droits réservés</span>
</p>

<p><img src='http://www.nbarch.com/files/gimgs/6_corpatauxinterieur5thomas-jantscher_v2.jpg' alt='tous droits réservés' /><br />
<span>crédit - Thomas Jantscher : tous droits réservés</span>
</p>

<p><img src='http://www.nbarch.com/files/gimgs/6_corpataux-plan-rez.png' alt='' /><br />
<span>plan rez-de-chaussée&nbsp;</span>
</p>

<p><img src='http://www.nbarch.com/files/gimgs/6_corpataux-plan-sous-sol.png' alt='' /><br />
<span>plan sous-sol&nbsp;</span>
</p>

<p><img src='http://www.nbarch.com/files/gimgs/6_corpataux-elevation-nord-est.png' alt='' /><br />
<span>élévation nord-est&nbsp;</span>
</p>

<p><img src='http://www.nbarch.com/files/gimgs/6_corpataux-elevation-sud-ouest.png' alt='' /><br />
<span>élévation sud-ouest&nbsp;</span>
</p>

<p><img src='http://www.nbarch.com/files/gimgs/6_corpataux-elevation-nord-ouest-sud-est.png' alt='' /><br />
<span>élévations nord-ouest et sud-est&nbsp;</span>

</p>

<p><img src='http://www.nbarch.com/files/gimgs/6_corpataux-coupe-transversale.png' alt='' /><br />
<span>coupe transversale&nbsp;</span>
</p>
</div>

<!-- end text and image -->

</div>
</div>

</body>
</html>


avec ou sans la détection automatique de l'encodage des caractères, le navigateur choisit l'ISO-8859-1 par défaut. En forçant l'UTF-8 dans affichage > encodage des caractères > unicode (UTF-8), la page s'affiche parfaitement.
Si le navigo avec détection auto choisit l'ISO, c'est que les en-têtes lui disent de le faire.

Avant toute sortie (html, echo, etc.) envoie manuellement un en-tête content-type similaire à la balise meta:

header("Content-Type: text/html; charset=utf-8");
Après avoir envoyer manuellement un en-tête content-type similaire à la balise meta, je n'obtiens pas de changement.



<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<?php header("Content-type: text/html; charset=utf-8");?>
<html xmlns='http://www.w3.org/1999/xhtml' xml:lang='en' lang='en'>
<head>
<meta http-equiv="Content-type" value="text/html; charset=utf-8">
Lpu8er a écrit :
Avant toute sortie (html, echo, etc.) envoie manuellement un en-tête content-type similaire à la balise meta:

header(&quot;Content-Type: text/html; charset=utf-8&quot;);


C'est d'ailleurs fortement étonnant que tu n'aies aucun changement avec un header mis de manière sale en plein milieu de code HTML sorti à la volée (techniquement, ça te sort une erreur si tu as une sortie standard avant).
Utilises-tu de la mise en cache via ob_* ?

Concernant le SET NAMES, je reste dubitatif quant à cette erreur. Tu as la portion de code où tu as exécuté cette requête ?
Modifié par Lpu8er (16 Aug 2011 - 17:36)
J'ai appris que le SET NAMES UTF8 est fait automatiquement dans les sources indexhibit. Or à regarder la simple page d'accueil du site sur lequel je travaille, le meta est indiqué en utf8 mais la page est détectée en ISO par firefox.

Selon certaines sources, il semblerait qu'il y ait un problème du côté des bases de données. tout ne serait pas en utf 8...

J'ai alors édité le fichier defaults.php lié à l'installation d'indexhibit avec filezilla+notepad, et j'ai pu vérifier que la ligne ci dessous existait.
// define the default encoding
$default['encoding'] = UTF-8;
regarde si c'est bien UTF-8

Il ne restait qu'une solution: créer un fichier .htaccess dans lequel j'ai inséré le texte suivant :
AddDefaultCharset utf-8
j'ai posé le fichier .htacess à la racine du site pour forcer apache à envoyer des pages encodées en utf8.

Dorénavant, le site semble afficher correctement les pages.
Modifié par g.g (16 Aug 2011 - 18:27)