0

我正在到达\u1F44A\u1F44A我期望的地方\ud83d\udc4d\ud83d\udc4d

import org.apache.commons.lang3.StringEscapeUtils

val data=""

println(StringEscapeUtils.escapeJava(data))//\u1F44A\u1F44A

println(StringEscapeUtils.unescapeJava("\u1F44A\u1F44A"))//ὄAὄA

println(StringEscapeUtils.unescapeJava("\ud83d\udc4d\ud83d\udc4d"))//

我怎么得到这个\ud83d\udc4d\ud83d\udc4d

4

3 回答 3

1

统一码:U+1F44D

UTF-16BE:D8 3D DC 4D

你可以看到1F44D uincode 表

所以

println(StringEscapeUtils.escapeJava(data))//\u1F44A\u1F44A
println(StringEscapeUtils.unescapeJava("\ud83d\udc4d\ud83d\udc4d"))//

也许IDE控制台窗口使用utf-16be?Eclipse可以设置控制台窗口使用utf-16be或其他

在此处输入图像描述

于 2020-11-24T06:48:55.680 回答
0

这是 Apache Commons-Lang 3.0 和 3.1 中的一个错误。我认为它在 3.2.0 中已修复,所以升级到 3.2.x 或 3.3.x。

于 2014-07-27T12:29:04.000 回答
0

我认为我们不需要 Apache Commons Library。我们可以使用可用的标准库在 Scala 中轻松实现这一点。

val data: String =""

println(System.getProperty("file.encoding", "No encoding")))
// prints UTF-8

println(data.map(x => "\\u%04x".format(x.toInt)).mkString)
// prints \ud83d\udc4d\ud83d\udc4d

file.encoding您可以通过在 JVM 配置中设置参数来设置编码。

Scastie上针对 Scala 版本 2.13.3 进行了测试。

于 2020-11-24T07:27:59.003 回答