Encodage caractère

malopo
WRInaute discret
WRInaute discret
 
Messages: 61
Inscription: 6 Juil 2007

Encodage caractère

Message le Dim Sep 30, 2007 18:36

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 ?

Tilt
WRInaute impliqué
WRInaute impliqué
 
Messages: 858
Inscription: 26 Mar 2005

Message le Dim Sep 30, 2007 19:08

C'est trop vague : une url faciliterait la tâche.

malopo
WRInaute discret
WRInaute discret
 
Messages: 61
Inscription: 6 Juil 2007

Message le Dim Sep 30, 2007 19:17

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


Dharius
WRInaute impliqué
WRInaute impliqué
 
Messages: 829
Inscription: 6 Avr 2005

Message le Dim Sep 30, 2007 19:23

Exactement le même problème sur mon www aves le nuage de mots clés... étrange

passion
WRInaute accro
WRInaute accro
 
Messages: 3105
Inscription: 6 Jan 2006

Message le Dim Sep 30, 2007 19:56

Tu dois tout d'abord encoder ta variable de récupération --> urlencode($var);

Puis tu l'utilises via urldecode($var);
Voir doc
http://www.php.net/manual/fr/function.urlencode.php

malopo
WRInaute discret
WRInaute discret
 
Messages: 61
Inscription: 6 Juil 2007

Message le Dim Sep 30, 2007 20:17

Cette fonction c'est pas plutôt quand on veut passer la variable dans une URL ?


webmasterlamogere
WRInaute passionné
WRInaute passionné
 
Messages: 1874
Inscription: 17 Déc 2006

Message le Dim Sep 30, 2007 20:23

Il faut définir dans ton html le code de caractère comme :
Code: Tout sélectionner
<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.


bproductiv
WRInaute accro
WRInaute accro
 
Messages: 4146
Inscription: 27 Déc 2004

Message le Lun Oct 01, 2007 8:31

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.


Pandore
WRInaute passionné
WRInaute passionné
 
Messages: 1441
Inscription: 14 Oct 2005

Message le Lun Oct 01, 2007 18:09

bproductiv a écrit: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:

Tilt
WRInaute impliqué
WRInaute impliqué
 
Messages: 858
Inscription: 26 Mar 2005

Message le Lun Oct 01, 2007 19:21

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.


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités