Unicode Supplementary Multilingual Plane in Java
Asked Answered
C

2

8

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 the console?

Thank you in advance for your help.

Consumer answered 20/1, 2010 at 18:45 Comment(0)
B
5
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[]

Bespangle answered 20/1, 2010 at 18:49 Comment(0)
C
4
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.

Chairwoman answered 20/1, 2010 at 19:12 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.