繁体   English   中英

字符的java unicode值

[英]java unicode value of char

当我执行Collection.sort(List)时,它将基于String的compareTo()逻辑进行排序,在该逻辑中,将两个字符串逐个字符进行比较。

    List<String> file1 = new ArrayList<String>();
    file1.add("1,7,zz");
    file1.add("11,2,xx");
    file1.add("331,5,yy");
    Collections.sort(file1);

我的理解是char表示它指定了unicode值,我想知道char的unicode值,例如,(逗号)等。我该怎么办? 任何网址都包含这些网址的数值吗?

我的理解是char表示它指定了unicode值,我想知道char的unicode值,例如,(逗号)等

好吧,有一个从charint的隐式转换,您可以轻松地打印出来:

int value = ',';
System.out.println(value); // Prints 44

这是char的UTF-16代码单元。 (如fge所述,Java中的char是UTF-16代码单元,而不是Unicode字符。存在大于65535的Unicode代码点,它们表示为两个UTF-16代码单元。)

任何网址都包含这些网址的数值吗?

是-有关Unicode的更多信息,请访问Unicode网站

嗯, char不是一个“ unicode值”(使用的单词是Unicode code point )。

char是UTF-16编码的代码单元。 碰巧的是,在Unicode的基本多语言平面中(即,对于此范围内定义的代码点,Unicode代码点的范围从U + 0000到U + FFFF),是的,在char和Unicode之间存在char映射。

为了知道代码点的数值 ,您可以执行以下操作:

System.out.println((int) myString.charAt(0));

但这不是BMP外部代码点的情况。 对于这些,一个代码点转换为两个字符。 请参见Character.toChars() 更一般而言, Character所有静态方法都与代码点有关。 有很多!

这也意味着String.length()实际上具有误导性,因为它返回的是字符数, 而不是字素数。

带有一个Unicode表情符号的演示(该页面的第一个):

System.out.println(new String(Character.toChars(0x1f600)).length())

打印2 鉴于:

final String s = new String(Character.toChars(0x1f600));
System.out.println(s.codePointCount(0, s.length());

打印1

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM