2010-01-20 2 views
7

Je souhaite utiliser SMP (plan multilingue supplémentaire) en Java. En fait, je veux imprimer un caractère dont le codepoint est supérieur à 0xFFFF. J'ai utilisé cette ligne de code:Plan multilingue supplémentaire Unicode en Java

int hexCodePoint = Character.toCodePoint('\uD801', '\uDC02'); 

pour avoir le codepoint d'un caractère spécial. Mais comment puis-je imprimer ce caractère Unicode sur la console?

Merci d'avance pour votre aide.

Répondre

5
String s = new StringBuilder().append("Here is a codepoint: ").appendCodePoint(hexCodePoint).toString(); 
System.out.println(s); 

Notez que sous Windows, il ne produirait pas le résultat attendu en raison des capacités limitées Unicode de la console

EDIT: Ou Character.toChars(hexCodePoint) pour produire char[]

4
System.out.println("\uD801\uDC02"); 

Maintenant, si U +10402 (& # x10402;) apparaît sur la console dépend de:

  1. si l'encodage System.out convertit en va transformer les données en un codage avec perte (comme une page de codes Windows "ANSI" ou MacRoman); voir defaultCharset()
  2. si la console prend en charge le codage System.out transforme les données (parfois, ce n'est pas la valeur par défaut sur les consoles de Windows qui utilisent de vieilles applications OEM)
  3. si la console a le soutien de la police pour le caractère

Les solutions à ces problèmes seront spécifiques à la plate-forme.