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