Aller au contenu

Quel encodage/charset choisir ?


Donald.Dingue

Messages recommandés

Bonjour,

je m'apprête à (re-)lancer un site multilingue (plusieurs langues parmi lesquelles : Anglais, Français, Allemand, Espagnol et bientot : Portugais, Polonais et peut être d'autres plus tard). Je fais face à la grande question du choix du charset : ISO-8859-1 , ISO-8859-2 , ISO-8859-15 ou UTF-8 ?

Le site se présente sous la forme d'un forum sous IPB (Invision Power Board, le même que celui ci)

Pour l'instant (il est déjà en ligne mais fermé le temps que je le prépare et que je publie plusieurs articles avec l'aide d'autres admin), j'ai choisi UTF-8 en espérant que l'ensemble des caractères spéciaux pourront passer sans problèmes. (il y'en a beaucoup en Polonais, Allemand et Portugais (BR)).

Est-ce le bon choix ?

Lien vers le commentaire
Partager sur d’autres sites

Oui c'est un bon choix pour un grand nombre de langues et donc un grand spectre de caractères.

Par contre php il est à peu près aussi efficace pour gérer l'utf-8 qu'un four pour congeler : il se viande à tout les niveaux possibles !

- gestion du BOM (Byte Order Marker) : il ne sais même pas ce que c'est. Résultat si ta source est un fichier utf-8 valide avec tout le header qui va bien php ne va rien comprendre : insertion des données corrompues dans ta base sql et insertion de caractères fantômes à chaque début de fichier (avant le doctype et avant chaque include). Il est donc impératif de castrer ses fichiers utf-8 en utilisant  des éditeurs qui le premettent (notepad++ par exemple)

- transmission du mime-type/header de requête : par défaut il se contrebalance de ton fichier et il renvois toujours un header bateau du genre "text/html; charset=iso-8859-1". Il faut donc bien penser à forcer le header où alors à reconfigurer le serveur si tu es sur un dédié.

Lien vers le commentaire
Partager sur d’autres sites

Merci pour vos réponses.

Oui c'est un bon choix pour un grand nombre de langues et donc un grand spectre de caractères.

Par contre php il est à peu près aussi efficace pour gérer l'utf-8 qu'un four pour congeler : il se viande à tout les niveaux possibles !

- gestion du BOM (Byte Order Marker) : il ne sais même pas ce que c'est. Résultat si ta source est un fichier utf-8 valide avec tout le header qui va bien php ne va rien comprendre : insertion des données corrompues dans ta base sql et insertion de caractères fantômes à chaque début de fichier (avant le doctype et avant chaque include). Il est donc impératif de castrer ses fichiers utf-8 en utilisant des éditeurs qui le premettent (notepad++ par exemple)

- transmission du mime-type/header de requête : par défaut il se contrebalance de ton fichier et il renvois toujours un header bateau du genre "text/html; charset=iso-8859-1". Il faut donc bien penser à forcer le header où alors à reconfigurer le serveur si tu es sur un dédié.

J'ai pas réellement tout compris... :-S

Mon site est basé sur IPB : Invision Power Board. Il y'a une option dans son administration où l'on peut choisir le charset/encodage. C'est donc à ce niveau que j'ai modifié l'encodage des pages du site, et c'est bel et bien effectif du côté utilisateur, mais est ce que IPB gérera correctement l'encodage UTF-8 sans problème ?

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

j'ai contacté mon service client (Infomaniak, très bons hébergeurs au passage ;-)). Extrait :

Bonjour,

j'ai plusieurs hébergements chez vous, dont un qui est international, c'est à dire qu'il y a des discussions dans le forum en plusieurs languages parmi lesquels Anglais, Français, Allemand, Polonais, Portugais etc.

Afin d'assurer la compatibilité avec les différents caractères spéciaux (accents et autres), j'ai choisi d'utiliser l'encodage/charset UTF-8 dans mon forum IPB (Invision Power Board) actuellement en construction.

Cependant on m'a dit que cela pourrait causer des problèmes avec PHP, Apache et MySQL s'ils ne sont pas configurés correctement.

J'aimerai savoir ce qu'il en est : aurai-je à faire à des problèmes ? Les

caractères spéciaux seront-ils bien acceptés et affichés ?

Ce à quoi ils m'ont répondu

Il faut que vous regardiez quel interclassement est choisi dans votre interface phpmyadmin (via la console d'admin), si c'est bien utf8 il n'y aura aucun problème.

Mais j'ai un souci. En effet, si la connexion à MySQL utilise bien l'interclassement UTF-8 comme le montre cette capture :

infomaniak-jeu-caracteres-mysql-UTF-8-unicode-idem-interclassement-connexion-mysql.jpg

...ce n'est pas le cas de mes tables, qui sont, quand à elles, en latin1_german_ci, comme en atteste cette capture :

infomaniak-base-donnees-mysql-interclassement-latin_1_german1_ci.jpg

Quand je leur en ai parlé, ils m'ont dit qu'il est possible de changer l'interclassement des tables en utilisant cette commande :

ALTER TABLE tbl_name DEFAULT CHARACTER SET charset_name;

(CF : http://dev.mysql.com/doc/refman/5.0/fr/alter-database.html et http://dev.mysql.com/doc/refman/5.0/fr/alter-table.html )

J'ai donc tenté la commande suivante :

ALTER TABLE prefixipb_posts DEFAULT CHARACTER SET utf8_general_ci;
et
ALTER TABLE prefixipb_posts DEFAULT CHARACTER SET utf8_unicode_ci;

Mais dans les deux cas, j'obtiens un message d'erreur sous PhpMyAdmin :

#1115 - Unknown character set: 'utf8_general_ci'

Quelqu'un peut m'aider svp ? :yes:

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...