Java没有';t解码传递的字符串(使用unicode)

Java没有';t解码传递的字符串(使用unicode),java,utf-8,decode,encode,emoji,Java,Utf 8,Decode,Encode,Emoji,我正在创建字符串(通过连接输入字符串和一些预定义文本),将其保存到数据库中,并将其传递给以下方法: public String decodeUTF(String inputString) {   byte[] bytes = StringUtils.getBytesUtf8(inputString);   return StringUtils.newStringUtf8(bytes); } 当我调用(并将结果发送到前台(android))时: 它起作用了(露出微笑) 当我打电话时 d

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

public String decodeUTF(String inputString) {
    byte[] bytes =  StringUtils.getBytesUtf8(inputString);
    return StringUtils.newStringUtf8(bytes);
}
当我调用(并将结果发送到前台(android))时:

它起作用了(露出微笑)

当我打电话时

decodeUTF(sameStringFromDb);

在Java源代码中,
\uD83D
是一个转义代码:编译器用一个代码单元替换它

如果在数据库中看到
\uD83D
,则它不是转义码,而是六个独立字符的序列

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

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


如果无法修复数据项,并且您希望像Java编译器一样用单个字符替换文本“\uD83D”,这已在其他问题中介绍过,请参见示例

So。。。
sameStringFromDb
包含什么?显然,它不能包含相同的字符串。数据库包含:表情符号示例:\uD83D\ude04相同的字符串,不带双引号。非常感谢。“属性”解决方案效果良好。现在无法更改数据输入。
decodeUTF(sameStringFromDb);