2

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

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

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

结果是:

"m ?"

%E9 似乎是“é”字符的 unicode 点,但 Java 解码并不完全理解它。
有没有办法在 Java 中解码由 Actionscript escape() 编码的字符串?这些函数使用什么转义格式,因为它们看起来不同?

提前感谢您的帮助,
保罗

4

1 回答 1

10

m%20%E9不是UTF -8。这很容易看出,因为任何超出 ASCII 范围(即 0-127)的字符在 UTF-8 中至少需要 2 个字节。既然%20是空间,那只剩下%E9é。

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

所以正确的解码方法是:

URLDecoder.decode("m%20%E9", "ISO-8859-1")
于 2011-08-02T15:51:16.620 回答