1

私はURLDecoderいくつかの URL を分析するクラスで Java で少し遊んでいますが、問題が発生しました。バグなのか予想通りの動作なのかよくわからないので、ここに載せておきます。

次のURL を検討してください: https://id2.s.nfl.com/fans/mobile/login?gigyresp=true&city= S%u00e3o+Paulo%2c+Brazil &profileURL=...

URLDecoder「São Paulo」の部分、特に「ã」が「%u0」としてエンコードされているようです。他のほとんどのものはうまく処理されているように見えますが、これはそうではありません。

私は以下を使用しています:

URLDecoder.decode(url, "UTF-8");

私のスタックトレースは次のとおりです。

Caused by: java.lang.IllegalArgumentException: URLDecoder: Illegal hex characters in escape (%) pattern - For input string: "u0"
    at java.net.URLDecoder.decode(URLDecoder.java:173)

URLDecoderこれを正しく解析する方法はありますか?

4

2 に答える 2

2

URL エノディングはオクテットで行われます%AB\u00e3あなたのエンコーディングは、Java 文字列エンコーディングと のような URL エンコーディングが混在しているよう%xxxxですが、これは有効ではありません。

文字列を に変更して"S\u00e3o Paulo, Brazil"でエンコードすると、完全にデコード可能なURLEncoder.encode(url, "UTF-8")が得られます。S%C3%A3o+Paulo%2c+Brazil

于 2012-10-15T20:29:41.337 に答える
0

これは、Microsoft の非標準エンコーディングのようです。これは違法な URL です。誰もが拒否する必要があります。

自分でデコードする必要があります:%u####はユニコードです####

于 2012-10-15T20:15:05.100 に答える