在Java中初始化不稳定的字符

Nic*_*col 4 java character-encoding

我试图在我的Java代码中使用一些时髦的字符.

    Character c = new Character('');
Run Code Online (Sandbox Code Playgroud)

(如果您的Web浏览器不显示字符,它的"1F000麻将牌东风",是取自这里.

Java抱怨'无效字符常量'.是什么赋予了?我认为Java的Character支持Unicode.

另外,有没有办法通过Unicode值初始化Character?有点像new Character('0x01F000')

Jon*_*eet 6

非BMP(基本多语言平面)字符不能表示为Java char(或因此a Character),因为a char只是一个16位无符号整数.在Java中使用代理对表示非BMP字符.

你需要使用一个字符串...但即便如此,我怀疑你需要明确地提供代理字符对.C#有一个\U转义序列,相当于\u但对于32位值,但Java没有这样的东西:(

这是一种替代方法,它允许您直接在代码中使用Unicode值:

String x = new String(new int[] { 0x1f000 }, 0, 1);
Run Code Online (Sandbox Code Playgroud)

这很难看,但它有效......