如何在Java中编写unicode cross符号?
我正在尝试用Java编写这个unicode十字符号( 𐀵 ):
class A { public static void main(String[] args) { System.out.println("\u2300"); System.out.println("\u10035"); } }
我可以通过它写一条线( ⌀ )就好了,但十字符号没有出现,而只是打印数字5:
# javac A.java && java A ⌀ ဃ5
为什么?
你正在寻找U + 10035,它在Basic Multilingual Plane之外 。 这意味着您不能使用\u
来指定值,因为它只处理U + 0000到U + FFFF – 在\u
之后总是有四个hex数字。 所以目前你有U + 1003( “MYANMAR LETTER GHA” ),然后是’5’。
不幸的是,Java没有提供字符串文字forms,这使得BMP之外的字符很容易表达。 将它包含在文字(但仍然是ASCII)中的唯一方法是使用UTF-16代理对forms:
String cross = "\ud800\udc35";
或者,您可以将32位代码点forms用作int
:
String cross = new String(new int[] { 0x10035 }, 0, 1);
(这两个字符串相等。)
说了这么多,你的控制台仍然需要支持这个角色 – 你需要尝试一下才能找出它。
我相信Java代表从0x0000
到0xFFFF
Unicode字符。 Java会将"\u10035"
评估为"\u1003"
和之后的5。
0x10035是一个补充Unicode字符。 如果希望程序渲染它,则需要支持它的字体。
http://www.oracle.com/technetwork/articles/javase/supplementary-142654.html
Unicode转义符长度为4个字符。 您正在打印\ u1003,然后是’5’。 你确定你有正确的代码点吗?