tags:

views:

60

answers:

3

Hi everybody,

I want to work with SMP(Supplementary Multilingual Plane) in Java. Actually, I want to print a character whose codepoint is more than 0xFFFF. I used this line of code:

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

to have the codepoint of a special character. But how can I print this unicode character to console?

Thank you in advance for your help.

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

Note that in Windows it wouldn't produce the expected output due to the limited Unicode capabilities of the console

EDIT: Or Character.toChars(hexCodePoint) to produce char[]

axtavt
A: 
System.out.println("\uD801\uDC02");

Now, whether U+10402 (𐐂) actually turns up on the console depends on:

  1. whether the encoding System.out converts to will transform the data to a lossy encoding (like a Windows "ANSI" codepage or MacRoman); see defaultCharset()
  2. whether the console supports the encoding System.out transforms the data to (sometimes, this is not the default on Windows consoles which use old OEM mappings)
  3. whether the console has font support for the character

Solutions to these problems will be platform-specific.

McDowell
A: 

Hi,

Thanks a lot. I am using Eclipse. Even after using these lines, the console did not show the unicode character correctly. However, I reached to my final goal which was rendering the jpg image of a glyph. I used the appropriate font and the lines that you mentioned.

Thanks axtavt and McDowell :)

Shadi