2010-07-07 4 views
1

J'utilise une expression EL dans JavaScript pour rendre la valeur chinoise.L'expression JSF EL rend des points d'interrogation (?) Pour les caractères chinois dans JavaScript

alert('#{bundle.chinese}'); 

Mais il affiche des points d'interrogation (?) Au lieu de caractères réels.

Lorsque je l'utilise en dehors d'une balise de script dans la même page XHTML, par ex.

<p>#{bundle.chinese}</p> 

Il rend les bons caractères chinois. Voir la source montre les valeurs codées en UTF html &....;). J'utilise JSF sur Facelets.

+0

Pouvez-vous s'il vous plaît clarifier "rend les points d'interrogation" un peu plus? Lorsque vous cliquez avec le bouton droit de la souris sur la page HTML et affichez la source générée, vous voyez 'alert ('???');' au lieu de 'alert ('&1234; &1234; &1234;')' ou '? – BalusC

+0

oui dans la source de la vue il montre alerte ('???') pour les chinese charecters. Pour les charcuteries anglais ça fonctionne bien – ali

+0

C'est bizarre ... Btw, c'est charActers, pas charEcters;) – BalusC

Répondre

2

Désolé, je ne peux pas reproduire cela avec Mojarra 2.0.2 sur Tomcat 6.0.20. Voici la page JSF je:

<!DOCTYPE html> 
<html 
    xmlns="http://www.w3.org/1999/xhtml" 
    xmlns:f="http://java.sun.com/jsf/core" 
    xmlns:h="http://java.sun.com/jsf/html"> 
    <f:loadBundle basename="com.example.i18n.text" var="bundle" /> 
    <h:head> 
     <title>test</title> 
     <script>alert('#{bundle.chinese}');</script> 
    </h:head> 
    <h:body> 
     <p>#{bundle.chinese}</p> 
    </h:body> 
</html> 

Et voici le contenu de com/example/i18n/text.properties.

chinese=\u6C49\u8BED\uFF0F\u6F22\u8A9E\u002C\u0020\u534E\u8BED\uFF0F\u83EF\u8A9E\u0020\u006F\u0072\u0020\u4E2D\u6587 

La source HTML généré est:

<!DOCTYPE html> 
<html xmlns="http://www.w3.org/1999/xhtml"><head> 
    <title>test</title> 
    <script>alert('汉语/漢語, 华语/華語 or 中文');</script></head><body> 
    <p>汉语/漢語, 华语/華語 or 中文</p></body> 
</html> 

Probablement que vous faites des choses un peu différemment et/ou utiliser un autre impl/version JSF. N'êtes-vous pas quelque part codé en dur/en utilisant un encodage de caractères non-UTF-8? Regardez également les paramètres de l'EDI.

+0

Merci pour l'entrée ci-dessus. Le résultat ci-dessus est celui que je cherche. Cependant, il y a quelques différences. Les caractères (base de données) que je reçois du rendu jsf sont codés en html UTF (&#...;) qui est rendu correctement partout sauf dans la balise de script. J'ai inclus la balise xml et la balise meta dans laquelle j'ai défini le jeu de caractères sur utf-8 mais rien de tout cela ne fonctionne. Y a-t-il une configuration au niveau du serveur que je dois changer ou dois-je ajouter un tag au niveau de la page? ps: - Mon application est déployée sur 6.1 – ali

+0

Dans le test ci-dessus, il suffit de coder (sous forme &#...;) les données, puis de vérifier ce qui est en cours de rendu. – ali

+1

Voulez-vous dire que le texte est stocké en tant qu'entités XML (par exemple 'Ӓ') dans la base de données? Pourquoi? Veuillez clarifier davantage les spécifications techniques afin que nous puissions essayer de reproduire cela. Jusqu'ici vous ne décrivez que les symptômes, mais vous ne donnez rien de faisable. Comment * exactement * les caractères sont-ils stockés? Comment * exactement * les récupérez-vous? Comment * exactement * les montrez-vous? Mettez à jour votre question pour inclure un exemple complet comme je l'ai fait ci-dessus dans ma réponse. – BalusC

Questions connexes