我正在尝试在Java代码中使用一些时髦的字符。
Character c = new Character('');
(如果你的网络浏览器没有显示这个字符,它就是"1F000麻将牌东风“,取自here。
Java报告“无效字符常量”。怎么回事?我以为Java的字符支持Unicode。
另外,有没有办法通过字符的Unicode值来初始化字符?像new Character('0x01F000')
这样的东西
发布于 2011-01-09 01:17:22
非BMP(基本多语言平面)字符不能表示为Java (或Character
),因为char
只是一个16位无符号整数。在Java中,非BMP字符使用代理项对表示。
你需要使用一个字符串...但即使这样,我也怀疑您需要显式地提供代理项字符对。C#有一个\U
转义序列,它等同于\u
,但对于32位值,它没有这样的东西:(
下面是另一种方法,它允许您在代码中直接使用Unicode值:
String x = new String(new int[] { 0x1f000 }, 0, 1);
它很难看,但它很有效。
发布于 2011-01-09 01:36:26
这只是一种替代方法,但您也可以使用:
String str = new String(Character.toChars(0x1F000) );
https://stackoverflow.com/questions/4635072
复制相似问题