2 回答

TA贡献1820条经验 获得超9个赞
看起来像一个非标准的基于UTF-16的“滚动轴承”编码,这是中文的“滚珠轴承”。
我建议只用反斜杠,然后从阿帕奇共享资源中使用:.replaceAll%uStringEscapeUtils
import org.apache.commons.lang3.StringEscapeUtils
val unescapedJava = StringEscapeUtils.unescapeJava(str.replaceAll("%u", "\\u"))
URLDecoder.decode(unescapedJava, StandardCharsets.UTF_8.name())
这应该处理这两种类型的转义:
后跟数字的正常转义序列不受替换和%unescapeJava
奇怪的被特殊对待(替换为),并在第一步中消除。%u\u
如果(仅当)您绝对确定所有代码点都以这种方式编码,那么您可以不这样做:StringEscapeUtils
new String(
"%u6EDA%u52A8%u8F74%u627F"
.replaceAll("%u", "")
.grouped(4)
.map(Integer.parseInt(_, 16).toChar)
.toArray
)
它产生
res: String = 滚动轴承
但我建议不要这样做,因为这种方法会分解为包含未转义字符的输入。最好使用可靠的库方法来处理所有角落的情况。"%u6EDA%u52A8%u8F74%u627Fcafebabe"
添加回答
举报