2

文字列が Actionscriptescape()関数によってパーセント エンコードされ、デコードのために Java に渡される環境があります。

たとえば、テスト文字列があります"m é"
それは Actionscript escape() に渡され"m%20%E9"
、Java でデコードしようとすると次のように出力されます。

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

結果は次のとおりです。

"m ?"

%E9 は「é」文字の Unicode ポイントのようですが、Java デコードでは完全には理解されません。
Actionscript escape() でエンコードされた文字列を Java でデコードする方法はありますか? これらの関数は異なるように見えるため、どのエスケープ形式を使用しますか?

助けてくれてありがとう、
パオロ

4

1 に答える 1

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")
于 2011-08-02T15:51:16.620 に答える