2009-05-29 5 views
0

Sur les pages Web de notre application, le symbole de la marque (TM) apparaît sous la forme d'un point d'interrogation. La marque déposée (R) fonctionne, cependant. Nous affichons la valeur en utilisant la balise c: out dans la bibliothèque standard JSP. Si je mets & commerce; ou & # 8482; sur la page pour tester cela, ceux-ci apparaissent comme ils sont censés le faire.JSPs et le symbole de la marque

<td><c:out value="${item.description}"/></td> <!-- does not work --> 
<td>yada yada yada Spiros&trade; yada yada yada</td> <!-- works --> 

Pour ajouter à cela, nous utilisons aussi YUI, et avant que nous affichons ces pages, ils apparaissent dans une table de données de YUI que les résultats d'une requête (l'utilisateur clique sur une ligne pour aller à la page décrite ci-dessus). Le (TM) apparaît correctement dans cette table. Cela me dit que nous récupérons correctement la valeur de notre base de données, et que le code serveur générant le XML à renvoyer vers la table de données YUI fonctionne également. Pourquoi la même Chaîne est-elle correctement affichée dans la table de données YUI, mais pas dans une JSP normale, sauf si nous codons en dur le symbole sur la page?

+0

Quel codage de caractères la page utilise-t-elle? –

Répondre

1

Vous avez probablement un problème d'encodage. Si vous ne disposez pas d'un codage explicite dans votre JSP:

<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %> 

alors il est temps d'ajouter un. Essayez UTF-8 et si cela ne fonctionne pas essayez ISO-8859-1 ... ou si vous connaissez l'encodage correct, utilisez-le.

+0

Je n'avais pas ajouté ceux-ci. Quand je l'ai fait, voila, ça a marché. Merci! –

0

Lorsqu'un caractère apparaît comme? à l'intérieur d'un navigateur (généralement Firefox) cela signifie que l'encodage de la page (comme il est détecté par le navigateur ne reconnaîtra pas le char.) Un bon test serait de voir-> Encodage des caractères-> UTF-8 dans Firefox. Cela signifie que le char (tm) est codé en utilisant la norme UTF-8 Vous devez indiquer à votre page de définir l'en-tête de codage de réponse sur UTF-8. vous devez d'abord savoir comment le caractère est encodé (regardez par exemple quel encodage est lu dans la base de données) et essayez de définir l'en-tête de codage de la page à cet encodage. encodé en tant qu'entité html connue que le navigateur interprète quel que soit l'encodage de la page

+0

Il n'y a rien de tel que "encoded using unicode" Unicode est un jeu de caractères, pas un encodage. Vous semblez confondre Unicode et UTF-8. –

+0

True :-). J'ai été emporté. Édité. –

Questions connexes