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



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

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

当我打电话(并将结果发送到前台(安卓系统((:

decodeUTF("Emoji example: uD83DuDE04");

它有效(显示微笑(。

当我呼叫时

decodeUTF(sameStringFromDb);

它通过整个字符串whithout转换。

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

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

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

你必须要问的一件事是,为什么文本";\uD83D";首先访问数据库。存储在数据库中的文本不应该以这种方式被破坏。听起来数据输入处有一个错误。

如果没有办法修复数据条目,并且您希望替换文本";\uD83D";对于像Java编译器一样的单个字符,这已经在其他问题中介绍过了,请参见例如将转义的Unicode字符转换回实际字符

最新更新