下面这两个字符串有什么区别?当我解码第一个字符串时,它工作正常,并且我可以看到变音字符显示得很好。
String val = "m%C3%B6torhead album";
String decodedVal = URLDecoder.decode(val, StandardCharsets.UTF_8);
但是当我尝试解码下面的字符串时,我看不到变音字符工作正常。
String val = "m%EF%BF%BDtorhead album";
String decodedVal = URLDecoder.decode(val, StandardCharsets.UTF_8);
谁能告诉我这里出了什么问题吗?这些字符串是我们从上游获取的,因此我们无法控制。
最佳答案
第二个序列解码为 U+FFFD REPLACMENT CHARACTER,用于替换其值未知或无法用 Unicode 表示的传入字符。
这意味着您可能会看到类似 � 的内容。
您无法在客户端上解决该问题,问题出在服务器上,需要在那里修复。
关于java - 变音符号的解码问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51981080/