7
votes

Imprimer String arabe en Java

J'essaie d'afficher du texte arabe en Java, mais cela montre des caractères indésirables (exemple: ¤ [ï߯ [î) ou parfois seulement des points d'interrogation lorsque je imprime. Comment puis-je faire imprimer l'arabe? J'ai entendu dire que c'est quelque chose relatif à Unicode et UTF-8. C'est la première fois que je travaille avec des langues alors aucune idée. J'utilise Eclipse Indigo Ide.

EDIT: Si j'utilise l'encodage UTF-8, alors "¤ [ï߯¯ [Î" Les caractères deviennent "????????" caractères.


5 commentaires

Voulez-vous imprimer dans l'application de bureau ou l'application Web?


Où zou imprimez-vous votre sortie? Dans la console Eclipse? Méfiez-vous, cette ligne de commande standard ne prend pas en charge Unicode.


La console Eclipse capture simplement la sortie d'un processus qui est Unicode, Hurda.


@Hurda: Vous avez raison. Toute alternative pour que je puisse l'imprimer sur la console ou simplement pour vous assurer que la sortie que je reçois a raison!


@Joey Oui, la sortie est unicode, mais si vous exécutez cette application dans l'environnement qui ne prend pas en charge Unicode, vous avez un problème. Console Eclipse est capable d'unicode.


3 Réponses :


2
votes

Si vous avez incorporé littéralement le texte dans le code, assurez-vous de définir correctement le codage de votre projet.


2 commentaires

Non, la sortie provient d'un appel WebService


Dans ce cas, vous devez utiliser le codage correct à lire dans la réponse WebService.



7
votes

Pour les démarreurs, vous pourriez jeter un coup d'œil ici . Cela devrait vous permettre de rendre Eclipse Print Unicode dans sa console (que je ne sais pas si c'est quelque chose que Eclipse prend en charge hors de la boîte sans aucun modification supplémentaire)

Si cela ne résout pas votre problème, vous avez probablement un problème avec l'encodage de votre programme, vous pouvez donc créer des chaînes d'une manière similaire à celle-ci:

string str = nouvelle chaîne ("تعطي يونيكود رقما فريدا لكل حرف". GetBytes (), "UTF-8");

Cela fonctionne au moins pour moi.


2 commentaires

@ Chandu-indyaah: Avez-vous essayé les deux? De plus, à quoi essayez-vous exactement d'imprimer? La méthode ci-dessus a fonctionné pour moi dans la console et jframe .


.getBytes () utilise le codage par défaut de la plate-forme, qui est essentiellement une valeur aléatoire. Conversion de la chaîne en octets puis de retour est entièrement redondante si les codages correspondent et corrompt la chaîne s'ils ne le font pas.



1
votes

C'est pour Java SE, Java Ee ou Java Me? Si cela est pour Java Me, vous devez faire des glyphutils personnalisés si vous utilisez Lwuit. Téléchargez ce fichier: http://dl.dropbox.com/u/55295133/U0600.PDF Regarder la liste des codages unicode .. Et regardez ce fil: https://stackoverflow.com/a/9172732/1061371 Dans la réponse (poste) de Mohamed Nazar qui édité par Bernama Alex Kliuchnikau, "Le code ci-dessous peut être utilisé pour afficher le texte arabe dans J2ME String S = nouvelle chaîne (" \ u0628 \ u06a9 ".GETBYtes ()," utf-8 "); \ u0628 \ u06a9 est l'unicode de deux lettres arabes " Regardez le fichier U0600.PDF, nous pouvons donc voir que Mohamed Nazar et Alex Kliuchnikau donnent un exemple pour créer un personnage "BA" et "KAF" en arabe.

Ensuite, le dernier point que vous devez envisager est de: "Assurez-vous que votre utilisateur UI Support Unicode (je veux dire l'arabe) caractère." Comme Lwuit ne supporte pas encore unicode (je veux dire l'arabe). Vous devez faire votre code personnalisé si votre application utilise votre application utilise Lwuit.


0 commentaires