首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >StringEscapeUtils.escapeJava

StringEscapeUtils.escapeJava
EN

Stack Overflow用户
提问于 2014-07-26 20:07:03
回答 3查看 1.1K关注 0票数 0

我在期待\ud83d\udc4d\ud83d\udc4d的地方得到了\u1F44A\u1F44A

代码语言:javascript
复制
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

EN

回答 3

Stack Overflow用户

发布于 2020-11-24 14:48:56

Unicode: U+1F44D

UTF-16BE: D8 3D DC 4D

您可以看到1F44D uincode table

所以

代码语言:javascript
复制
println(StringEscapeUtils.escapeJava(data))//\u1F44A\u1F44A
println(StringEscapeUtils.unescapeJava("\ud83d\udc4d\ud83d\udc4d"))//

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

票数 1
EN

Stack Overflow用户

发布于 2014-07-27 20:29:04

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

票数 0
EN

Stack Overflow用户

发布于 2020-11-24 15:27:59

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

代码语言:javascript
复制
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

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

在Scala2.13.3版的Scastie上测试。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24970848

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档