PHP-MySQL et UTF-8


mikaweb
WRInaute discret
WRInaute discret
 
Messages: 208
Inscription: 4 Juil 2007

PHP-MySQL et UTF-8

Message le Sam Déc 15, 2007 12:26

Bonjour,

Je suis actuellement en train de passer un de mes sites entièrement en UTF-8 venant d'ISO je n'ai jamais eu de gros souci jusqu'à maintenant...

Il y a de plus en plus de monde qui poste des articles et certains utilisent des caractères non reconnus par ISO donc j'ai choisi d'aller sur un format de donnée plus large.

Ma question est simple, lorsque je rentre un é ou un è dans ma base de donnée, qu'est ce qui sera finalement affiché dedans ? é ou é ou encore autre chose ?

Je me pose la question car avec Notepad++ par exemple il suffit de mettre en UTF-8 sans Bom sans pour autant avoir besoin de mettre des é dans le fichier. Si je vais sur un site utf-8 que je connais, je met afficher la source, il affichera pleins de é alors que ce site est statique :roll:

Bref je ne sais pas si je suis assez clair, si ce n'est pas le cas veuillez me le dire et je tacherais d'expliquer un peu mieux mon "problème"

lefou
WRInaute discret
WRInaute discret
 
Messages: 131
Inscription: 7 Juin 2005

Message le Sam Déc 15, 2007 12:29

Le é c'est pour l'ISO donc en utf 8 il t'affichera é et non é.
Bref pour utf 8, c'est é.

darkjukka
WRInaute impliqué
WRInaute impliqué
 
Messages: 669
Inscription: 28 Avr 2007

Message le Sam Déc 15, 2007 13:00

Euh, mon site est en UTF-8 et si je met "é" le caractère n'est pas reconnu alors que é devient "é" donc je ne suis pas certains de ce que tu dis.

@mikaweb, perso pour l'affichage de texte provenant d'une base de données (où les "é" apparaissent bien "é"), j'utilise la fonction preg_replace pour changer le "é" en é et pas de soucis, j'ai mis tout les caractères que je connais et je n'ai plus à y penser.


mikaweb
WRInaute discret
WRInaute discret
 
Messages: 208
Inscription: 4 Juil 2007

Message le Sam Déc 15, 2007 13:06

Oui mais le but serait que je n'y ait même pas à y penser...
Si un mec met un signe que je n'ai pas mis dans mon preg_replace sa fout le bordel....

J'aimerais une gestion automatique, un simple utf8_encode avant d'envoyer dans la bdd ne suffit pas ?

darkjukka
WRInaute impliqué
WRInaute impliqué
 
Messages: 669
Inscription: 28 Avr 2007

Message le Sam Déc 15, 2007 13:09

La c'est hors de mes compétences, je t'ai donné la soluce que j'utilise car c'est uniquement pour afficher mes news que j'en ai besoin donc j'ai pas de caractères "éxotiques" puisque je suis le seul à poster.
Je traite a la sortie de la BDD en fait, pas à l'entrée.


gael@aventure
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 48
Inscription: 4 Nov 2006

Message le Sam Déc 15, 2007 15:17

mikaweb a écrit: un simple utf8_encode avant d'envoyer dans la bdd ne suffit pas ?

Bonjour,
J'ai envie de te dire, essaie ;)
Mais je pense tu es sur la bonne voie

Suis pas un pro de l'utf8 mais je sais aussi que pour l'affichage correct il vaut mieux convertir tes fichiers à la main avec bloc note par exemple.
fichier > enregistrer sous >sélection du codage

Enfin et surtout bien déclarer tes entêtes et ta balise Meta charset

Bon courage


Chacho
WRInaute discret
WRInaute discret
 
Messages: 74
Inscription: 16 Sep 2007

Message le Sam Déc 15, 2007 18:22

Si Apache2 est configuré en utf-8 ce qui est le cas par défaut, un simple :
Code: Tout sélectionner
mysql_connect('XX','XX','XX');
mysql_select_db('XX');
mysql_query("SET NAMES 'utf8'");

Oublie pas aussi avec phpmyadmin par ex, de modifier l'interclassement des tables ( moi j'ai utf8_general_ci )

SET NAMES indique ce qui est dans la commande SQL que le client envoie. Par conséquent, SET NAMES cp1251 indique au serveur : ``les futurs messages fournis par ce client seront dans le jeu de caractères cp1251'' et le serveur est libre de les traduire dans son propre jeu de caractères, éventuellement.


KOogar
WRInaute accro
WRInaute accro
 
Messages: 3884
Inscription: 16 Nov 2004

Message le Dim Déc 16, 2007 9:17

mikaweb a écrit:Si un mec met un signe que je n'ai pas mis dans mon preg_replace sa fout le bordel....


a moins d'avoir un site a connotation international sinon je ne vois pas l'interet de passer en utf8. Nous sommes en terre latine ;)
Si tu recois des données 'bizarre', commence pas voir le charset de tes documents.
Les données qui sont a passer dans un langage plus international sont celles qui s'adressent aux moteurs internationaux. Donc la balise title et le meta description ou tout les caractereres spéciaux doivent etre passer en iso.


Chacho
WRInaute discret
WRInaute discret
 
Messages: 74
Inscription: 16 Sep 2007

Message le Dim Déc 16, 2007 12:23

J'ai passé tous mes sites en utf8 et je n'ai aucun problème maintenant que j'ai compris comment le gérer. Plus de prises de tête avec les accents, on peut rentrer n'importe quel caractère comme tel.
Pourquoi rester en iso quand il est tellement facile de passer à lutf. Vivement que tout le monde y passe et qu`on oublie ces pb archaïques de caractères


Marie-Aude
Modérateur
Modérateur
 
Messages: 11173
Inscription: 5 Juin 2006

Message le Dim Déc 16, 2007 16:32

Merci Chacho :)


KOogar
WRInaute accro
WRInaute accro
 
Messages: 3884
Inscription: 16 Nov 2004

Message le Lun Déc 17, 2007 13:17

Chacho a écrit:J'ai passé tous mes sites en utf8 et je n'ai aucun problème maintenant que j'ai compris comment le gérer. Plus de prises de tête avec les accents, on peut rentrer n'importe quel caractère comme tel.
Pourquoi rester en iso quand il est tellement facile de passer à lutf. Vivement que tout le monde y passe et qu`on oublie ces pb archaïques de caractères


Je comprend bien. Si demain j'ai un nouveau projet, pas de probleme car un simple CREATE DATABASE projet CHARACTER SET UTF8 me suffira... mais de la à repasser mes sites en utf8, je vois pas du tout l'interet, en plus je me vois mal rajouter des mb_ devant mes fonctions de chaines...

Par contre je suis d'accord que le futur appartient a l'utf8 :D


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 2 invités