取字符串Mediæval%20Bæbes。可以在URL中将其编码为Medi%E6val + B%E6besMediæval%20Bæbes。首先,我在解码时得到正确的æ字符。后者给我-(替换字符)。我无法弄清楚如何使Java双向解码(可能在同一URL中)。我也尝试了java.net.URI和apache的URLCodec。

谢谢

最佳答案

您将永远找不到解决此难题的方法,因为这两个字符串采用两种不同的编码。 æ的UTF-8是%C3%A6,%E6是ISO-8859-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");

关于java - Java URLDecoder特殊字符和UTF-8,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18668226/

10-10 14:38