2009-11-04 2 views
2

J'essaie de permettre aux utilisateurs d'entrer des caractères hébreux dans certains champs dans un formulaire HTML (traité en utilisant java). Je l'ai fait quelques recherches, et il est évident que la balise suivante doit faire partie du document HTML:Passage de caractères en langue étrangère vers/à partir d'une base de données

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 

Cela fait, j'ai le résultat suivant: Lorsque l'utilisateur saisit du texte hébreu dans l'entrée champ, il va enregistrer et afficher sur l'écran correctement, en hébreu. Cependant, si je vois les données dans la base de données, c'est inintelligible. De plus, si j'essaie de le sortir dans un fichier (en utilisant iText), c'est du charabia. Cependant, si je saisis les données directement dans la base de données, elles sont lisibles en hébreu dans la base de données, ainsi que dans le fichier de sortie, mais elles sont charabia à l'écran.

Exemple: Si l'utilisateur est entré dans le navigateur, il apparaît comme ceci: עִבְרִית

La même chaîne, lorsque entrées dans la base, apparaît comme celui-ci sur l'écran: Ѱ

Lorsque l'on regarde la base de données, la chaîne-navigateur entrée ressemble à ceci: × ¢ × o'Ö × ° o'×× ª

la chaîne saisie manuelle apparaît comme ceci: עִבְרִית (bien qu'il semble gauche à droite, alors que l'hébreu est une langue de droite à gauche, copié et collé ici, il apparaît correctement, de droite à gauche)

De toute évidence, la base de données et le navigateur ne "parlent" pas la même langue avec ce codage. J'utilise SQL Server et n'a apporté aucune modification à la base de données, sauf pour m'assurer que le champ en question est défini comme un champ nvarchar. Qu'est-ce que je rate?

Répondre

1

Il semble que le codage de la base de données ne soit pas défini correctement. Si la base de données attend seulement 8859-1 (un schéma de codage par défaut commun), alors elle essayera de transformer l'utf-8 en 8859-1. Cela ne fonctionne souvent pas bien.

Voici un article de MS sur la question: http://support.microsoft.com/kb/232580

Larry

+0

Merci pour l'aide et le lien. J'ai lu l'article, et il a expliqué le problème, mais je n'arrive toujours pas à comprendre comment le réparer. Comment puis-je modifier le code HTML pour utiliser UTF-16 (UCS-2, qui prétend que l'article est utilisé par SQL Server 2000) ou obtenir SQL Server pour comprendre UTF-8? J'ai essayé de traduire la chaîne en UTF-16, mais cela ne semble pas fonctionner – twpc

+0

Avez-vous essayé de définir vos champs db comme étant de type BINARY/VARBINARY/IMAGE comme le suggère l'article MS (option 4)? –

+0

Oui, je l'ai fait, il ne l'a pas rendu lisible dans la base de données. Cependant, j'ai trouvé cet article, qui contenait le code nécessaire pour convertir les données de/à UTF-8 ... Fait intéressant, la conversion qui a fonctionné était entre UTF-8 et ISO-8859-1, pas entre UTF-8 et UTF-16, comme l'impliquait l'article de MS ci-dessus. Ceci est un must-read pour quelqu'un ayant le même problème et en utilisant Java: http://www.jguru.com/faq/view.jsp?EID=137049 – twpc

Questions connexes