4

一部のエンコーディング文字のデコードに問題があります。デコードする必要があるのは %E9 です。この D%E9bardeur と degr%E9 のような文字列があります。Java クラスで行うことは次のとおりです。

try
      {
        System.out.println(o);// test
        o = URLDecoder.decode((String) o, "UTF-8");
      }
      catch (UnsupportedEncodingException e)
      {
        e.printStackTrace();
      }

この操作の後、私が得るのは

D�bardeur and degr�

utf-8にデコードしないとまったく同じことが起こります

何かアドバイス?どうも

4

2 に答える 2

5

%E9 は UTF-8 ではありません。

これをデコードする正しい方法は次のようになります。

URLDecoder.decode((String) o, "ISO-8859-1")
于 2013-08-21T08:42:43.537 に答える
1

によって%E9、文字列に hex に評価されるバイトがあるということE9ですか? もしそうなら、それはUTF-8で「マルチバイト」としてフラグが立てられ、その後にさらに2つの「継続バイト」(正しい範囲内)があるためです。

UTF-8 は可変長エンコーディングであるため、一部のコード ポイント (文字値) は 1 バイトで表され、一部は 2、3 などで表されます。

UTF-8 として扱っている文字列が見つかった場合E9、次の 2 バイトは正しい範囲内にある必要があります。たとえば、この文字列では00、次E9の は有効な継続バイトではありません。

http://hexutf8.com/?q=0x640x650x670x720xe90x00

E9以下は、文字列の後に正しい 2 バイト続く例です。

http://hexutf8.com/?q=0xc20xa90xe90x810xaa

そして、適切な文字が表されます。

于 2014-11-15T04:38:11.547 に答える