2010-01-20 13 views
7

Ich möchte mit SMP (Supplementary Multilingual Plane) in Java arbeiten. Eigentlich möchte ich ein Zeichen drucken, dessen Codepunkt mehr als 0xFFFF ist. Ich benutzte diese Codezeile:Unicode Supplementary Multilingual Plane in Java

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

, um den Codepoint eines Sonderzeichens zu haben. Aber wie kann ich diesen Unicode-Charakter auf der Konsole drucken?

Vielen Dank im Voraus für Ihre Hilfe.

Antwort

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

Beachten Sie, dass in Windows wäre es nicht die erwartete Ausgabe aufgrund der begrenzten Unicode-Funktionen der Konsole produzieren

EDIT: Oder Character.toChars(hexCodePoint)char[]

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

Nun zu produzieren, ob U +10402 (& # x10402;) erscheint tatsächlich auf der Konsole abhängig von:

  1. Ob die Codierung System.out in konvertiert wird, wandelt die Daten in eine verlustbehaftete Codierung um (wie eine Windows- "ANSI" -Codepage oder MacRoman); siehe defaultCharset()
  2. , ob die Konsole die Codierung unterstützt System.out, um die Daten transformiert (manchmal ist dies nicht der Standard auf Windows-Konsolen, die alten OEM-Mappings verwenden)
  3. , ob die Konsole Schriftart-Unterstützung für das Zeichen
hat

Lösungen für diese Probleme werden plattformspezifisch sein.