私の場合、「|」である賢明でない文字(RFC 2396)を含むパスを持つ URL オブジェクトを取得しました (パイプ) 文字。これを安全に URI に変換する必要がありますがURL.toURI()
、例外がスローされます。
URL のドキュメントを読みましたが、この部分はわかりにくいです。
URL クラス自体は、RFC2396 で定義されているエスケープ メカニズムに従って URL コンポーネントをエンコードまたはデコードしません。URL を呼び出す前にエスケープする必要があるフィールドをエンコードすること、および URL から返されるエスケープされたフィールドをデコードすることは、呼び出し元の責任です。さらに、URL には URL エスケープの知識がないため、同じ URL のエンコードまたはデコードされた形式の間の同等性を認識しません。
では、どうすればいいですか?変換中にこの文字をエンコードするパターンは何ですか? URL オブジェクトのエンコードされたコピーを作成する必要がありますか?