2011-09-21 5 views
0

J'ai rencontré un problème lors de l'insertion de caractères inhabituels dans MongoDB.mongoDB avec des caractères UTF-8 non standard

Les personnages sont les suivants: é è í ì á à ... etc

essentiellement, les caractères qui sont principalement utilisés dans les pays latins. Quand je l'insère par script (puisque si je l'essaie dans la console il répond "caractère non-utf-8") il le fait très bien, eh bien, il l'ajoute à la collection, mais avec des caractères étranges .

si je fais une découverte, avec disons, « ola » et j'ai un champ qui obtient une recherche avec « ola » mais avec ces personnages étranges, il répond les données sur le terrain, je veux juste bien ... cependant, si elle affiche quelque chose comme ce champ il y a une sorte de caractère qui n'est pas votre chartype anglais standard, ceci:

�til?

est-il possible que je peux gérer cela? J'utilise le serveur Websphere Portal, les sorties du fichier PortletView en UTF-8, le servlet gère les données saisies pour le coder en UTF-8 lors de l'envoi à la base de données pour la requête, et il gère également les données récupère de la base de données en UTF-8 (juste pour être sûr).

Merci d'avance.

+0

Vérifiez qu'un filtre de servlet n'entraîne pas l'utilisation du codage de caractères incorrect par la requête. Cela peut être dû à l'appel de la famille de méthodes 'getParameterXXX()' sur la fonction 'ServletRequest' * avant de définir le codage de caractères de la requête sur' UTF-8'. –

+0

bien je fais une conversion quand je fais la transmission de chaînes entre le DB et le servlet ... pourrait être un problème en l'apportant du servlet au portletview ... –

+0

Ainsi il semble que dans le 'doPost () 'de la servlet, juste avant que je fasse l'appel' response.getWriter() 'je devrais faire ce qui suit: ' String contentType = "text/html; jeu de caractères = UTF-8"; '' 'response.setContentType (contentType); ' Si vous le souhaitez, vous pouvez publier cette réponse et je l'accepterai, car je ne peux pas donner de réponse à ma propre question. –

Répondre

1

Vérifiez qu'un filtre de servlet n'entraîne pas l'utilisation du codage de caractères incorrect par la requête. Cela peut être dû en appelant l'une des getParameterXXX() famille de méthodes sur le ServletRequest avant de définir le codage de caractères de la demande à UTF-8. Le servlet spec indique que ISO8859-1 est utilisé par défaut. Voir SRV.3.9 Demander le codage des données.

Assurez-vous également que la réponse utilise le type de contenu correct (avec codage). Comme indiqué ci-dessus dans le commentaire:

String contentType= "text/html;charset=UTF-8"; 
response.setContentType(contentType); 
Questions connexes