Site PHP/MySQL polyglotte : quels charset/collation choisir?

Lio70

Membre expert
Club iGen
16 Janvier 2004
2 396
1 282
Bonjour,

Il s'agit d'un site dynamique PHP4/MySQL4/HTML4 qui date de quelques années. La "collation" sur le serveur MySQL est par défaut en Latin1_swedish_ci et le jeu de caractère des pages web generees est défini en ISO-8859-1 dans l'en-tete.

C'est un site bilingue francais/anglais et on demande maintenant d'ajouter une version chinoise (chinois simplifie).

Pour simplifier ici sa présentation, je dirais que dans une partie privée du site, son gestionnaire dispose d'une page avec un formulaire et 3 cases dans lesquelles il tape le meme texte dans 3 langues différentes. En cliquant sur un bouton "Ajouter", un nouvel enregistrement est ajoute dans une tables de données dotées de 3 champs (un pour chaque langue).

Sur la page d'accueil de la partie publique, l'internaute choisit la langue dans laquelle il veut lire le site. A chaque langue correspond une page avec son en-tête propre et un script PHP qui effectue un SELECT sur les données en fonction de la langue choisie.

Voici mon test. J'ai ajoute du texte en chinois et celui-ci s'affiche correctement en spécifiant le charset UTF-8 a la place de ISO-8859-1. Mais dans la base MySQL, le texte a été converti en code HTML (&#........). Comment éviter cela et préserver les caractères chinois originaux?

Quelle combinaison de collation et jeu de caractères faut-il de préférence utiliser pour gérer cela correctement? Je peux intervenir ici:
- modification de la collation d'un champ de la table
- utilisation des fonctions "set character" et "set names" dans les scripts PHP
- personnalisation du charset dans l'en-tête de chaque page HTML (la page du formulaire d'ajout doit cependant avoir dans son en-tête un jeu de caractère convenant aux trois langues).

Corollaire: quelle fonte recommandez-vous pour un affichage compatible multi-o.s./multi-browsers et confortable aux yeux des chinois?

Merci de partager votre expérience éventuelle.
 
Dernière édition:
Merci.
En fait, j'avais règle la question en laissant la base MySQL en latin1_swedish_ci car il y a deja pas mal de texte encode comme ca, sans compter les pages web en ISO-8859-1, onc pour les pages web HTML j'ai simplement mis l'en-tête en "content=zh" et le "charset=UTF-8". Cela rend correctement autant sous Windows/Internet EXplorer que Firefox et Safari, donc OK.

Evidemment dans la base c'est converti en codes HTML mais tant pis, le client est content, et on peut toujours convertir lors d'une exportation éventuelle.