我有一个环境,其中字符串由Actionscript escape()
函数编码,然后传递给Java进行解码。
我有一个测试字符串"m é"
它传递给Actionscript escape(),输出"m%20%E9"
当我尝试用Java解码时:
URLDecoder.decode("m%20%E9", "UTF-8")
结果是:
"m ?"
%E9似乎是“é”字符的unicode点,但Java解码并不十分清楚。
有没有办法在Java中解码由Actionscript escape()编码的字符串?
这些函数使用什么转义格式,因为它们似乎不同?
提前感谢您的帮助,
保罗
答案 0 :(得分:10)
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")