PHP-MySQL et UTF-8

WRInaute discret
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"
 
WRInaute impliqué
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.
 
WRInaute discret
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 ?
 
WRInaute impliqué
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.
 
Nouveau WRInaute
mikaweb a dit:
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
 
WRInaute discret
Si Apache2 est configuré en utf-8 ce qui est le cas par défaut, un simple :
Code:
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.
 
WRInaute accro
mikaweb a dit:
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.
 
WRInaute discret
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
 
WRInaute accro
Chacho a dit:
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
 
Discussions similaires
Haut