【问题标题】:How can I show unicode of more than one byte chars in java [duplicate]如何在java中显示超过一个字节字符的unicode [重复]
【发布时间】:2020-06-11 21:37:33
【问题描述】:

我必须显示输入字符的 unicode 例如 A -> 65 但是对于像表情符号这样的字符我该怎么办? ??? -> 125814

【问题讨论】:

  • "????".toCodePoints().forEach(System.out::println)"????".codePointAt(0)Character.codePointAt("????", 0)

标签: java unicode emoji


【解决方案1】:

这是一种输出任何字符的代码点的方法:

import java.io.UnsupportedEncodingException;

public class Test
{
    public static int getCodePoint(String s) throws UnsupportedEncodingException
    {
        byte[] a = s.getBytes("UTF-32BE");
        return ((a[1] & 0xFF) << 16) + ((a[2] & 0xFF) << 8) + (a[3] & 0xFF);
    }

    public static void main(String []args) throws UnsupportedEncodingException
    {
        System.out.println(getCodePoint("A")); // 65
        System.out.println(getCodePoint("?")); // 128514
    }
}

【讨论】:

  • 虽然这可能有效,但这不是一个好的解决方案,因为 Java 已经提供了 Character.codePointAt()String.codePointAt(),正如对问题的评论中提到的那样。
  • @skomisa 你说得对,我认为 codePointAt() 不支持代理对,但事实证明确实如此。
猜你喜欢
  • 1970-01-01
  • 2013-01-31
  • 1970-01-01
  • 1970-01-01
  • 2021-12-30
  • 1970-01-01
  • 2015-01-21
  • 2011-03-14
  • 1970-01-01
相关资源
最近更新 更多