Encodage caractère

WRInaute discret
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 ?
 
WRInaute discret
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
 
WRInaute passionné
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.
 
WRInaute accro
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.
 
WRInaute passionné
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:
 
WRInaute impliqué
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.
 
Discussions similaires
Haut