以字符串Medi val%20B bes为例,它可以被编码为Medi%E6val+B%E6bes Medi val%20B。在第一次解码时,我得到正确的字符。后者给了我�(替换字符)。我不知道如何让Java以两种方式对其进行解码,可能是在同一个URL中。我也尝试过java.net.URI和apache的URLCodec。
谢谢
发布于 2013-09-07 01:03:55
您将永远找不到这个难题的解决方案,因为这两个字符串在两个不同的编码中。æ的UTF-8为%C3%A6,%E6为ISO8859-1。它只能像这样工作
String s1 = URLDecoder.decode("Medi%E6val+B%E6bes", "ISO-8859-1");
String s2 = URLDecoder.decode("Mediæval%20Bæbes", "UTF-8");
String s3 = URLDecoder.decode("Medi%C3%A6val%20B%C3%A6bes", "UTF-8");发布于 2013-09-07 00:01:26
第一个是安全编码:第二个不是,因此不工作。
请参阅这
编辑:更好的参考
https://stackoverflow.com/questions/18668226
复制相似问题