2017-09-24 1 views
0

Je suis en train d'analyser le XML en utilisant l'encodage UTF-8 qui a du chinois, japonais ou kannada. Je suis capable d'afficher les langues dans la page écran (HTML) mais je voulais générer le PDF ...Comment convertir une chaîne UTF-8 en japonais ou n'importe quelle autre langue IText PDF?

Je suis tombé sur les polices, mais je me suis inquiété comme des polices pour chaque langue (désolé si je me trompe). En mode débogage je peux voir le chinois et d'autres langues en variable quand il est converti en UTF -8 je vois ?????????

      new String(myString.getBytes(Charset.forName("ISO-8859-1")), 
            Charset.forName("UTF-8")) 

S'il vous plaît aider à afficher toutes les langues dans IText pdf

NOTE: Je suis analyse XML en utilisant UTF-8, Quand je rapportez de DB sans utiliser UTF ou tout ce que je suis capable d'imprimer en excel ... en PDF Je pense que je devrais utiliser des polices.

+0

Il semble que vous n'ayez pas suffisamment débogué ce problème pour le moment. Par exemple, pourquoi essayez-vous de "montrer les caractères Unicode" en définissant un encodage, au lieu de vous assurer que le code de génération PDF définit la bonne pile de polices? Sans code qui montre ce que vous essayez en ce moment, en tant que [mcve], nous n'avons aucune idée de ce que vous faites mal, et votre description ne donne pas assez d'informations pour que nous puissions continuer. S'il vous plaît donner [comment poser une bonne question] (/ aide/comment-demander) une relecture rapide et ajuster votre poste en conséquence. –

+0

Peu importe le codage du document XML (à condition de lire le document avec cet encodage); Toutes les valeurs de texte dans un document XML sont en Unicode. (Une bibliothèque ferait probablement cela mieux qu'une implémentation sur mesure.) –

+0

Ceci est Java, n'est ce pas? S'il vous plaît [modifier] pour ajouter un tag. Les chaînes Java sont également Unicode (UTF-16). Votre code est une conversion avec perte d'une chaîne Java (UTF-16) à ISO 8859-1 suivie d'une conversion de données corrompue depuis UTF-8, pour aboutir à nouveau à une chaîne Java (UTF-16). –

Répondre

1

UTF-8 est capable de représenter du texte dans toutes les langues. ISO-8859-1 est seulement capable de représenter le texte en anglais et la plupart des textes dans une poignée de langues européennes.

Si vous convertissez du texte en ISO-8859-1 et le stockez ensuite en tant qu'UTF-8, vous interrompez la prise en charge du texte dans d'autres langues non prises en charge par le sous-ensemble limité de l'ISO-8859-1. Gardez-le sous une forme Unicode (par exemple UTF-8). Comme cela a été mentionné dans les commentaires, les chaînes Java sont compatibles Unicode en interne (elles utilisent l'UTF-16 en interne) et il n'est donc pas nécessaire de convertir, même en UTF-8, toutes les langues. Vous n'auriez besoin de convertir si vous avez besoin de le faire pour ce que vous utilisez pour exporter au format PDF, mais il ne semble pas que vous avez spécifié ce que c'est.

+0

merci pour l'aide ... J'ai compris ce que je suis capable d'imprimer les langues dans Excel rapport ... sans utiliser UTF-8 ou quoi que ce soit juste obtenir les données et imprimer ... mais PDF Itext n'affiche pas ces textes (japonais et tout à fait) .. est tombé en utilisant des polices dans IText –

+0

@GopiLal * "mais Itext PDF n'affiche pas ces textes" * - alors montrez simplement le code pivot de votre utilisation de iText, afin que les gens ici puissent l'analyser et vous dire ce que vous faites mal. – mkl