2010-01-20 15 views
7

Chcę pracować z SMP (Dodatkowa płaszczyzna wielojęzyczna) w Javie. Właściwie chcę wydrukować znak, którego współdzielenie jest większe niż 0xFFFF. Użyłem tej linii kodu:Dodatkowy wielojęzyczny samolot w języku Java

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

, aby kodepun specjalnego znaku. Ale jak mogę wydrukować ten znak Unicode na konsolę?

Z góry dziękujemy za pomoc.

Odpowiedz

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

Należy pamiętać, że w systemie Windows nie przyniosą spodziewanych rezultatów ze względu na ograniczone możliwości Unicode konsoli

EDIT: Or Character.toChars(hexCodePoint) produkować char[]

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

Teraz, czy U +10402 (& # x10402;) faktycznie pojawia się na konsoli zależy od:

  1. , czy kodowanie System.out przekształci dane na stratne kodowanie (jak strona kodowa "ANSI" Windows lub MacRoman); zobacz defaultCharset()
  2. czy konsola obsługuje kodowanie System.out przekształca dane (czasami nie jest to domyślny na konsole systemu Windows, które używają starych mapowania OEM)
  3. czy konsola obsługuje czcionki dla charakteru

Rozwiązania tych problemów będą zależne od platformy.