Java 不解码传递的字符串(使用 unicode)

Java doesn't decode passed string (with unicode)

我正在创建字符串(通过连接输入字符串和一些预定义的文本),将其保存到数据库中并将其传递给以下方法:

public String decodeUTF(String inputString) {
    byte[] bytes =  StringUtils.getBytesUtf8(inputString);
    return StringUtils.newStringUtf8(bytes);
}

当我调用(并将结果发送到前端(android))时:

decodeUTF("Emoji example: \uD83D\uDE04");

有效(显示表情符号)。

当我打电话时

decodeUTF(sameStringFromDb);

它传递整个字符串而不进行转换。

在Java源代码中,\uD83D是一个转义码:编译器将其替换为一个代码单元.

如果您在数据库中看到 \uD83D,那不是转义码,它是 六个独立字符的序列 '\' 'u' 'D' '8' '3' 'D'.

解决此问题并确保获得相同输出的正确方法是什么?

您必须要问的一件事是为什么文本“\uD83D”首先进入数据库。存储在数据库中的文本不应该以这种方式被破坏。听起来数据输入有问题。

如果没有办法修复数据输入,并且您想像 Java 编译器那样用单个字符替换文本“\uD83D”,这已经在其他问题中讨论过,例如参见 [​​=12=]