2010-11-18 9 views
2

Je suis confronté à un problème de codage de jetons. Quand installé le serveur de jetée sur Mac (OSX), cela fonctionne très bien. Mais, quand il est installé sur Ubuntu (10.10), le codage des caractères n'est pas correct.Problème de codage de jetons

Le mot dans la page (non URL) problème ayant est: New York Times® Meilleures ventes

Il est présenté comme « New York Times� Meilleures ventes » sur la page par le serveur sous Linux

et il est présenté comme "New York Times® Meilleures ventes" sur la page fournis par le serveur sur Mac (Ceci est correct)

la version serveur est jetée: HighTide-7.0.2.v20100331

L'encodage de caractères du fichier servi est: UTF -8

Pouvez-vous s'il vous plaît laissez-moi savoir si des paramètres doivent être modifiés pour surmonter ce problème?

Merci d'avance!

Répondre

3

Vous l'avez; pour moi, il manquait en-tête codage de la JSP:

<%@ page contentType="text/html;charset=UTF-8" language="java" %> 
+0

Cela n'aide que pour les pages JSP, bien que ... – Noah

5

J'ai eu un problème similaire avec la jetée 8 et a résolu le problème en ajoutant cette ligne bin/jetty.sh:

JAVA_OPTIONS+=("-Dfile.encoding=UTF-8") 
3

J'ai aussi eu un problème comme celui-ci et je tiens à remercier Aditsu pour sa réponse. J'utilise le restlet sur un serveur Jetty sur Ubuntu 12.04 (et 14.04). L'application de restauration est derrière un serveur Apache qui fonctionne comme un proxyPass.

Tous les fichiers sont en format UTF-8.
Toutes les réponses HTTP ont Content-Type text/html; jeu de caractères = UTF-8.
Tous les fichiers contiennent < meta content = "text/html; charset = UTF-8" http-equiv = "type de contenu"/>

La chose étrange est que lorsque le serveur démarre et je visite le site, le codage de caractères n'était pas UTF-8, donc j'ai tous ces personnages amusants. Même lorsque tous les signaux indiquaient au serveur et aux agents, et tout ce qui se trouvait entre les deux, UTF-8 est utilisé comme encodage. Lorsque je redémarre le service manuellement après le démarrage du serveur, tous les caractères sont corrects. Parce que je ne pouvais pas trouver une réponse facilement et je ne savais pas qui causait ce mauvais codage, j'ai continué à redémarrer le service manuellement. Mes candidats à ce moment-là étaient: Apache, l'ordre de démarrage du service Ubuntu, la structure Restlet, l'encodage de fichier réellement utilisé, les en-têtes HTTP, les balises méta HTML. Mais tout était comme il était censé être. Donc, à la fin, c'était Jetty que je considérais seulement maintenant après avoir revisité ce problème plusieurs fois. Je n'ai toujours pas la moindre idée de la raison pour laquelle le démarrage au démarrage rend le codage de caractères erroné et après un redémarrage manuel du service, le codage est correct. L'ajout de l'argument JAVA supplémentaire '-Dfile.encoding = UTF-8' a tout fait disparaître. Merci encore à aditsu pour avoir partagé sa solution !!

Vive

Edit: settting la variable d'environnement LANG dans le script de démarrage aussi résoudre le problème. C'est à dire.

export LANG = en_US.UTF-8

En fait, ceci est la différence entre le démarrage du serveur de jetée au moment du démarrage (LANG est pas définie hors de la boîte) et à partir d'une coquille. Donc deux solutions pour le même problème.

0

Vous lisez probablement directement le codage http brut et vous devez le décoder en utf8 à l'aide du décodeur. Utilisez java.net.URLDecoder ligne = URLDecoder.decode (ligne, "UTF-8");

Pour encoder du texte en charset html, utilisez URLEncoder, comme lorsque java String directement pour publier: line = URLEncoder.encode (ligne, "UTF-8");

+0

Veuillez ajouter une mise en forme pour votre code. –