2010-06-01 5 views
0

Ma base de données doit contenir des chaînes contenant des caractères en langue étrangère. Par exemple, un utilisateur entre une chaîne dans un formulaire, le formulaire est soumis et la chaîne est ajoutée à DB. La chaîne sera affichée sur une page Web. Je voudrais utiliser UTF-8 car il sera capable de gérer toutes les langues requises.Travailler avec des langues étrangères

Actuellement, je crois que ma base de données est définie sur 'latin1', mais les pages Web sont capables d'afficher les caractères corrects de toute façon. Des problèmes surviennent lorsque vous essayez de définir des zones de texte pour contenir des caractères étrangers et lors de l'affichage de la base de données via la ligne de commande.

Comment puis-je l'implémenter efficacement? Mon plan était de blitz le site entier de sorte que le charset de DB soit UTF-8, et que le charset de page Web soit UTF-8. Est-ce que quelqu'un pourrait me donner les commandes minimales sur la façon de faire cela pour ne pas dupliquer les choses (avoir des commandes "UTF-8" partout où j'en ai vraiment besoin) et rendre les choses trop difficiles à contrôler?

edit: Utilisation de MySQL, PHP et JavaScript/HTML

+2

Quelle base de données? – duffymo

+3

Votre question pourrait être beaucoup plus facile de répondre si vous avez indiqué quelle base de données vous utilisez et peut-être aussi dans quel cadre/langue le site est écrit. –

+0

Hypothèse d'un seul "DB" et la divulgation de "latin1" = MySQL – Xeoncross

Répondre

0

Ce serait la voie à suivre (UTF-8) dans le DB. Voici ce que vous voulez regarder:

  1. Votre soutien navigateur caractères UTF-8 (assurez-vous que la police que vous utilisez a des caractères pour toutes les pages de code pertinentes que vous avez besoin pour soutenir) et est le méta charset tag défini correctement?

    < meta http-equiv = "Content-Type" content = "text/html; charset = utf-8"? > (en HTML4)

    < xml version = "1.0" encoding = "UTF- 8 "? > (En XHTML)

  2. Envoyez-vous un en-tête ContentType? Si c'est le cas, assurez-vous qu'il correspond à ce que vous définissez dans votre balise meta ou XML version.

  3. En ce qui concerne votre ligne de commande, assurez-vous que le terminal que vous utilisez et le jeu de caractères de votre shell correspondent également. (Vérifiez les paramètres régionaux sur votre serveur, en supposant qu'il est * NIX vous pouvez le faire en tapant "locale") faisant cela va changer votre configuration locale:

    export LANG = "en_US.UTF-8"

    Si vous utilisez Windows pour vérifier les paramètres régionaux du système. . Si vous utilisez PuTTY pour vous connecter à votre serveur, vous devez vous assurer que vous l'avez configuré en mode Unicode pour prendre en charge UTF-8. L'autre chose que vous allez vouloir regarder dans mysql est le paramètre de classement de la table. Assurez-vous que c'est une collation qui a du sens pour ce que vous cherchez à faire ou des indices qui auront des comportements inattendus. (Voir http://dev.mysql.com/doc/refman/5.0/en/charset-mysql.html)

Plus probable qu'improbable, vous voudriez mettre en place un fichier d'en-tête de votre site lui-même qui a les informations de codage et characterset comprennent que chaque point de vue. En ce qui concerne la base de données, vos champs text et varchar doivent bien sûr supporter le bon encodage, il n'y a pas moyen de le faire sans modifier chaque table pour s'assurer que son jeu de caractères est correct et que son classement est correct. créé dans un jeu de caractères, vous devez le convertir).