我有一个环境,其中字符串由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")