Encodage caractère

Bonjour,

Quand les utilisateurs entrent des caractères accentués sur mon site, ils ressortent la plupart du temps normalement:
é devient é
mais il arrive que é se transforme en é... je n'arrive pas à savoir pourquoi ça arrive de temps en temps.

Une idée ?
 
je ne pense pas que l'url aide, vu que c'est vrai sur toutes les forms du site et ça doit être du à un problème au niveau PHP ou Mysql.

En gros je fais

$texte = htmlentities(mysql_escape_string($_POST['texte']));

puis j'ajoute $texte à la base


à la lecture je fais juste
echo nl2br(stripslashes($texte));

la base est encodée en latin_qqch
 
Il faut définir dans ton html le code de caractère comme :
Code:
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

il faut également que le texte soit dans ce code. Il y a la fonction utf8_decode ou utf8_encode voir iconv.
 
halalala..on lit bien de tout ...
il suffit juste que ta base de donnée et ta page soit encodée pareil..
Déjà ton encodage est 'spécial' au niveau de ta base..
Le mieux c'est de tout faire en utf 8 et tu te pose plus la question après.
 
bproductiv a dit:
Le mieux c'est de tout faire en utf 8 et tu te pose plus la question après.
Oui mais cela dépend du public visé. On peut tout aussi bien faire tout en iso-8859-1 pour un site destiné à des francophones par exemple. Cet encodage étant fait pour des caractères de types "Europe de l'ouest".

Ce qu'il faut surtout retenir, c'est ce qu'a dit bproductiv : il faut que l'encodage des caractères de la page web et l'encodage des caractères de la table dans la base de données soient pareils.

:wink:
 
Par défaut, php est conçu pour fonctionner avec ISO-8859-*. Même si certains de mes sites ont besoin d'un charset utf-8, l'architecture est assez différente, c'est pourquoi j'emploie encore un ISO sur tous les sites où utf-8 n'est pas nécessaire.

On peut détecter l'encodage d'une chaîne grâce à mb_detect_encoding, et en fonction de ça, convertir ou non la chaîne en ISO-8859-1 avec iconv ou mb_convert_encoding.

Dans ton cas, je pense que c'est inutile : il doit s'agir d'une erreur d'encodage (meta content type, ou header content type)

Pareil pour toi Dharius, ta page est encodée en ISO-8859-1, et les caractères chinois sont des entités html : pas d'encodage multi-octets utf-8 ou autre.
 

➡️ Offre MyRankingMetrics ⬅️

pré-audit SEO gratuit avec RM Tech (+ avis d'expert)
coaching offert aux clients (avec Olivier Duffez ou Fabien Faceries)

Voir les détails ici

coaching SEO
Discussions similaires
Haut