Bonjour,
J’ai un problème avec du texte, j’ai cherché sur le forum.alsacreations.com,mais je n'arrive pas à trouver la solution.
Les "é" "à" "è" se transforment en "? "
J’ai testé plusieurs choses déjà comme :
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15" />
<meta http-equiv="Content-Type" content="text/html; charset=utf8_decode()" />

Mais rien ne fonctionne, mon texte vient de la basse de donnée.
Merci d'avance
Si tu vois des "?" à la place des caractères c'est que tes caractères sont codés en ISO-8859-15, mais que ton navigateur a reçu l'ordre de l'afficher en UTF-8.

En toute logique, ton <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15" /> devrait fonctionner.
Il est possible aussi que ton serveur web force le content-type en écrasant celui que tu définis dans le code, ou en en rajoutant un autre.

Ton <meta ...>, tu le mets où ? Il est bien dans le <head> de ta page ?
Sur ton navigateur, si tu vas voir les options d'encodage (Affichage > Encodage sous firefox, ...) qu'est-ce qui est préselectionné ? UTF-8 ? Si tu sélectionnes, ISO-8859-15, ça va mieux ?
Et si sur le navigateur, tu fais "afficher la source", tu vois bien ta ligne définissant le charset et uniquement celle-là ?

Ensuite, c'est un site hébergé où ? Chez toi en local ? C'est une page dynamique que tu essayes d'afficher ?
Oui le meta est bien dans<head>
Sous Firefox UTF-8 est sélectionné, mais je teste sur Opéra, IE, et Firefox, et le problème demeure sur les 3.
Quand je sélectionne ISO-8859-15, rien ne change.
Je teste sur un hébergeur gratuit, oui c’est une page dynamique que j’essaie d'afficher.
On peut le voir ici.
http://nathan.e3b.org/?action=texte&livre=21O&LSG=1
En cherchant bien dans le script, je ne pense pas que le problème vient du <meta>, j’ai trouvé un code qui montre exactement les lettres qui ne s’affichent pas, mais représenté par « ? ».
Au début le script était en en php4 et débutait avec <?) Alors j’ai changé en php5 qui veut <?PHP). Mais je ne sais pas trop quoi changé dans ce dernier.
Si une personne veut bien m’apporter de l’aide sur ce script merci d’avance.

<?php
function francais2($vers1) {
	if  ($vers1!="") {
		$vers1=strtr ($vers1, "àâéèêëÉïîôùüûç`", "aaeeeeeiiouuuc'");
		return $vers1;
	}
}
	function francais3($vers1) {
	if  ($vers1!="") {
		$vers1=strtr ($vers1, "`", "'");
		$vers1=str_replace("à", "¨¤", $vers1);
		$vers1=str_replace("â", "â", $vers1);
		$vers1=str_replace("é", "¨¦", $vers1);
		$vers1=str_replace("è", "¨¨", $vers1);
		$vers1=str_replace("ê", "¨º", $vers1);
		$vers1=str_replace("ë", "ë", $vers1);
		$vers1=str_replace("É", "É", $vers1);
		$vers1=str_replace("ï", "ï", $vers1);
		$vers1=str_replace("î", "î", $vers1);
		$vers1=str_replace("ô", "ô", $vers1);
		$vers1=str_replace("ù", "¨´", $vers1);
		$vers1=str_replace("ü", "¨¹", $vers1);
		$vers1=str_replace("û", "û", $vers1);
		$vers1=str_replace("ç", "ç ", $vers1);
		return $vers1;
	}
}
function francais4($vers1) {
	if  ($vers1!="") {
		$vers1=strtr ($vers1, "`", "'");
		$vers1=str_replace("à", "à", $vers1);
		$vers1=str_replace("â", "â", $vers1);
		$vers1=str_replace("é", "é", $vers1);
		$vers1=str_replace("è", "è", $vers1);
		$vers1=str_replace("ê", "ê", $vers1);
		$vers1=str_replace("ë", "ë", $vers1);
		$vers1=str_replace("É", "É", $vers1);
		$vers1=str_replace("ï", "ï", $vers1);
		$vers1=str_replace("î", "î", $vers1);
		$vers1=str_replace("ô", "ô", $vers1);
		$vers1=str_replace("ù", "ù", $vers1);
		$vers1=str_replace("ü", "ü", $vers1);
		$vers1=str_replace("û", "û", $vers1);
		$vers1=str_replace("ç", "ç ", $vers1);
		return $vers1;
	}
}
?>

Modifié par Nathan971 (20 May 2009 - 02:51)
Hello. Encore quelques pistes de réflexion...

Le fichier php qui contient le code que tu nous as copié/collé, il est codé comment ? En UTF-8 ou en ISO ? (Tu peux voir cela avec ton éditeur de texte. Tout dépend de l'éditeur de texte que tu utilises, en général c'est dans les menus Affichage ou Format....)
Comme visiblement ton serveur force la sortie en UTF-8, dans un souci d'homogénéité, le mieux serait que tous tes fichiers php soient encodés en UTF-8. Tu peux changer l'encodage des fichiers avec ton éditeur de texte, si tu n'en as pas beaucoup.

Ensuite, je suppose que tes textes sont stockés dans une base MySQL ? Sous quel charset les données sont elles stockées dans la base ? (Tu peux voir ça sous phpMyAdmin si tu en as un.)
Si ta base stocke les champs texte en UTF-8, lorsque tu interroges ta base depuis le PHP il faut préciser avant chaque requête que la communication se fait en UTF-8 : en éxécutant la requête SQL : SET NAMES utf8;

Au fait, si tu vas sous phpMyAdmin, et que tu regardes le contenu de tes tables.... Les accents sont bien visibles ?
Salut,

j'ai déplacé ton sujet dans le bon salon.

Je t'invite tout d'abord à en lire l'annonce qui fournit des liens expliquant les bases de l'encodage.

En l'occurrence ton serveur n'envoie pas d'en-têtes html donc ton problème vient à priori de ce que tu déclares tes pages en utf-8 mais que tu n'enregistres pas tes documents (paramétrage de ton éditeur) en utf-8. Ou alors le contenu provient de tables SQL et leur contenu ou ta connexion n'est pas en utf-8.
Modifié par Heyoan (20 May 2009 - 15:31)
Merci d’avoir déplacé dans le bon salon, je pensais qu’il correspondait mieux au XHTML.

Je viens juste de regardé mes tables sous phpMyAdmin, effectivement les accents ne sont pas visibles, mais le « ? » est bien présent. (donc, le contenu ou probleme vient de la table)
Il y a-t-il une solution pour remédier à cela ?
Modifié par Nathan971 (20 May 2009 - 20:53)
Alors là, non. Si ta base est vérolée, il n'y a pas moyen de remplacer les ? par des accents. Comment savoir s'il faut remplacer le ? par un é, un ê, un ç, un ù..... ?
Si tu as un dump "propre" de la base, tu peux le remettre en ligne. Sinon, va falloir tout reprendre à la main.......
Sur mon PC j’arrive à lire ce qui se trouve dans la table.sql (manuellement, en ouvrant avec bloc note). Les mots sont correctement orthographiés, les é, ê, ç, sont bien a leurs places et il n’a pas de « ? ».
Est t-il possible que ce la passe lors du transfère ?
Existe-t-il une configuration de phpMyAdmin pour empêcher cela ?
C’est quoi un dump ?
Nathan971 a écrit :
Est t-il possible que ce la passe lors du transfère ?

Lors de l'exécution de la requête SQL par mysql-server, oui.
Ça peut aussi être un simple problème de déclaration de l'encodage.
Il faudrait commencer par vérifier quel est l'encodage déclaré dans les en-têtes HTTP, et voir si en changeant l'encodage utilisé pour l'affichage dans le navigateur on obtient un affichage correct.

Nathan971 a écrit :
Existe-t-il une configuration de phpMyAdmin pour empêcher cela ?

Si le problème est une conversion des contenus par MySQL (par exemple si les contenus sont marqués comme étant dans un encodage A mais que la connexion MySQL se fait avec un encodage B, alors par défaut MySQL fera une conversion A -> B), il faut configurer MySQL pour qu'il n'effectue pas ce genre de conversion, ou s'assurer que la connexion avec MySQL se fait avec le même encodage que celui utilisé pour marquer les données dans la base.

Nathan971 a écrit :
C’est quoi un dump ?

Le résultat de la commande mysqldump, ou d'un export depuis phpMyAdmin.

Nathan971 a écrit :
Je viens juste de regardé mes tables sous phpMyAdmin, effectivement les accents ne sont pas visibles, mais le « ? » est bien présent. (donc, le contenu ou probleme vient de la table)

Sauf que phpMyAdmin utilise également une connexion avec le serveur MySQL, et qu'il peut souffrir du même problème que le script de ton site. L'affichage dans phpMyAdmin n'est pas fiable.
vickk a écrit :
Si ta base est vérolée, il n'y a pas moyen de remplacer les ? par des accents.

On ne parlera pas d'une base vérolée (???), mais plutôt de données corrompues ou mal enregistrées.
Je vais recommencer tout a zéro, et me servir de toutes les informations que j’ai pu avoir sur ce site pour je sujet.

Je remercie tous ceux qui m’ont tous ceux qui m’ont apporté leurs aides.

Juste avant de finir, je recherche un module de news pour qui affiche: la date, l’heure, le nom de celui qui a posté les news. Si vous avez cela dans vos archives (ou tout autre) merci de me contacter.
Merci Florent V.
Mais en me relisant, j’ai mal formulé ma demande, je recherche un script de news (qui affiche: la date, l’heure, le nom de celui qui a posté les news) pour l’intégré à un site.
sNews est un cms, malheureuse il ne me confiant pas.
J’attends d’autres propositions.
sNews est un micro-CMS qui peut être utilisé comme module de news dans un site statique. Il y a d'autres options, bien sûr, mais c'en est une. Smiley cligne

Nathan971 a écrit :
J’attends d’autres propositions.

STFW? Smiley cligne

(Sinon, 971 pour la Guadeloupe, ou rien à voir?)
C’est bien STFW ? Car je ne le trouve pas sur Google.

Oui, je suis bien en Guadeloupe d’où le 971
Pourquoi ?
Pour mon problème avec les "é" " à", j’ai tout refait à zéro et J’ai trouvé la solution à mon problème
Merci
Smiley biggrin
Nathan971 a écrit :
C’est bien STFW ? Car je ne le trouve pas sur Google.

Pour trouver STFW, il faut STFW. Smiley smile
(STFW signifie «Search the f*cking Web», c'est une variante du RTFM ou «Read the f*cking manual». À prendre au troisième degré, bien entendu.)

Nathan971 a écrit :
Oui, je suis bien en Guadeloupe d’où le 971
Pourquoi ?

Simple curiosité.