Créer un site en utf8

Comment créer un site en utf8 proprement

L'auteur de ce sujet a trouvé une solution à son problème.
Auteur du sujet

Bonjour à tous et toutes,

Je me questionne sur les différents points ou il faut faire attention pour créer un site en UTF8 des le départ.

Il y a du coté : - html -> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> - header php de mes pages

1
2
3
<?php
header('Content-Type: text/html; charset=utf-8');
?>
  • lien avec la base de données mysql -> c'est la ou je sèche. Comment fait-on ? C'est juste à la création des tables ou même durant les INSERT, SELECT ? Ou durant l'affichage.

Je sais comment faire pour éviter les "caractères merdiques" grace à utf8_decode et utf8_encode mais je voudrais faire ça proprement.

Si vous pouviez m'expliquer la "mèthode pro" ou la plus propre je vous en remercierai.

Merci d'avance pour votre aide.

Excellente fin de journée

Florian

+0 -0

Sur ma MySQL / MariaDB, je précise dès le départ que je veux faire du utf8 (et non du latin) lors de la création de la BDD et la création d'une table.

1
2
3
4
5
CREATE DATABASE IF NOT EXISTS `le_nom_de_ta_base` DEFAULT CHARACTER SET utf8 COLLATE=utf8_unicode_ci;

CREATE TABLE IF NOT EXISTS `le_nom_de_table` (
// Stucture de ta table
) DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

HTTP/1.1 418 I'm a teapot

+1 -0

Salut !

Il y a toute une entrée qui en parle dans la FAQ, je te laisse aller regarder  ;)

Pour la base de données c'est durant la connexion

1
2
<?php
$bdd->exec("SET CHARACTER SET utf8");

WinXaito

Ça, c'est pour les machines à remonter le temps vers PHP 5.3.6 et avant  ^^
Je conseille très vivement de n'utiliser que l'ajout au DSN comme mentionné dans la FAQ. C'est la seule méthode qui fasse que PDO soit au courant du jeu de caractères utilisé, et c'est nécessaire pour que, avec certains jeux de caractères, l'échappement se fasse correctement et permette d'éviter ainsi de potentielles injections.

Édité par Ymox

Evitez qu'on vous dise de les lire : FAQ PHP et Symfony 2Tutoriel WAMP • Cliquez 👍 pour dire merci • Marquez vos sujets résolus

+1 -0
Staff

Je débarque après la bataille, mais un point à attiré mon attention :

  • html -> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  • header php de mes pages
1
2
3
<?php
header('Content-Type: text/html; charset=utf-8');
?>

arglow

A noter que :

  • Ces deux méthodes sont équivalentes
  • Celle à base du HTML est à éviter car non valide W3C et surtout répétitive des headers HTTP (qui sont faits pour ce genre d'infos, à la différence du HTML)

Édité par viki53

  • […] Celle à base du HTML est à éviter car non valide W3C et surtout répétitive des headers HTTP (qui sont faits pour ce genre d'infos, à la différence du HTML)

viki53

OK pour la répétition, mais pas trop pour le cas de l'invalidité W3C, à moins que tu ne parlais uniquement de la version XHTML, qui risque effectivement de ne pas être considérée comme valide HTML5 (et même XHTML5). Mais sinon, <meta charset="…" /> reste valide, ne serait-ce que pour permettre aux navigateurs de détecter le bon jeu pour des pages enregistrées en local que les utilisateurs ouvrent au double-clic.

Quant au coup d'utiliser plus header() que <meta … />, il y a certains (vieux ?) navigateurs qui, malheureusement, prennent en priorité la balise par rapport aux en-têtes HTTP, probablement dû au mécanisme mis en place pour les pages locales. D'ailleurs, plutôt que de le mettre dans le code, je proposerais même de demander à Apache de gérer ça par défaut avec un AddDefaultCharset utf-8 dans un .htaccess, sachant que cette directive est justement normalement définie dans les paramètres de PHP avec default_charset (depuis PHP 5.6, si je ne m'abuse).

Édité par Ymox

Evitez qu'on vous dise de les lire : FAQ PHP et Symfony 2Tutoriel WAMP • Cliquez 👍 pour dire merci • Marquez vos sujets résolus

+0 -0
Staff

Je parle bien de celle qu'il donne en exemple, qui remplace le header HTTP. ;)

L'autre que tu donnes est effectivement valide (même si en théorie pas très utile si le serveur envoie les bons entêtes) et est d'ailleurs nouvelle (depuis HTML5).

+1 pour le reste sinon : rendre la config globale côté serveur pour ne plus se poser la question.

Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte