【问题标题】:How can I combine *\u" and the UTF-8 code for console output? (Java)如何结合 *\u" 和 UTF-8 代码进行控制台输出?(Java)
【发布时间】:2020-08-06 12:53:35
【问题描述】:

我想将 "\u" 与包含十六进制代码的 String 组合起来,以便我可以在控制台中打印出 unicode 字符。

我尝试过这样的事情,但控制台只打印常规文本,例如\uf600:

ArrayList<String> arr = new ArrayList<String>();
emoji.codePoints()
    .mapToObj(Integer::toHexString)
    .forEach((n) -> arr.add(n));  // arr will contain hex strings

for (int i = 1; i < arr.size(); i += 2) {
     System.out.println("\\u" + arr.get(i));
}

【问题讨论】:

  • 你能改变你的代码,只在你的数组中添加一些字符串吗?按原样运行这段代码有点困难。
  • "emoji" 是一个仅包含表情符号“‍????‍????‍”的字符串。十六进制值:1F469 200D 1F4BB
  • 我的意思是你的问题中的代码示例。我没有您的代码所依赖的“表情符号”对象。

标签: java unicode utf-8


【解决方案1】:

在 Java 中,\u 仅存在于编译器中,以方便您在源代码中添加 unicode 字符文字。如果在运行时创建一个包含 \u 后跟十六进制数字的字符串,则没有适当的机制将其转换为单个 char

听起来您想将每个代码点分别转换为字符串。这是您可以做到这一点的一种方法:使用Character.toChars 将代码点转换为 char 数组,然后从 char 数组构建一个新字符串:

ArrayList<String> arr = new ArrayList<String>();
emoji.codePoints().mapToObj(Character::toChars).map(String::new)
    .forEach(arr::add)

【讨论】:

    猜你喜欢
    • 2010-09-08
    • 2010-12-12
    • 1970-01-01
    • 2015-11-26
    • 1970-01-01
    • 2014-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多