我有一个环境,其中字符串由Actionscript escape()函数进行百分比编码,然后传递给Java进行解码。

例如,我有一个测试字符串"m é"
它被传递到输出"m%20%E9"的Actionscript escape()
当我尝试使用Java对其进行解码时:

URLDecoder.decode("m%20%E9", "UTF-8")


结果是:

"m ?"


%E9似乎是“é”字符的unicode点,但是Java解码并不太了解。
有没有一种方法可以用Java解码由Actionscript escape()编码的字符串?
这些功能似乎不同,因此使用什么转义格式?

预先感谢您的帮助,
保罗

最佳答案

m%20%E9不是UTF-8。这很容易看到,因为ASCII范围外的任何字符(即0-127)在UTF-8中至少需要2个字节。由于%20是空格,因此对于é只留下%E9

é实际上是U+00E9。下255个字符中的1:1将编码映射到Unicode是ISO-8859-1

因此,正确的解码方式如下:

URLDecoder.decode("m%20%E9", "ISO-8859-1")

10-07 16:38