2011-06-10 23 views
1

私のURLから "ö"のような英語以外の文字をエスケープするには、404の応答エラーが発生することがあります。私はJavaを使用しています。私を助けてください。URLの英語以外の文字をエスケープする

+3

URLをエンコードしますか? http://download.oracle.com/javase/1.5.0/docs/api/java/net/URLEncoder.html –

答えて

5

をお試しくださいRFC3986(http://tools.ietf.org/html/rfc3986)で指定されているURLエンコーディングを使用します。また、見ていてください:http://en.wikipedia.org/wiki/Percent-encoding

をJavaはこれを行うには、いくつかの方法が用意されています

http://download.oracle.com/javase/1.4.2/docs/api/java/net/URLEncoder.html

はISO-8859-1/15、UTF-8のような異なるエンコーディングに注意してください。これに応じて、 'ö'は%F6または& C3%D6(またはこのようなsth)にエンコードされます。

3

java.netパッケージでの使用のURLEncoder/URLDecoderの

2

私は同様の問題がありましたが、URLパスに 'ü'がありました。様々なSOの記事で実験の数時間後、私はこの(from here)を得た:

URL url = new URL(urlString); 
URI uri = new URI(url.getProtocol(), url.getUserInfo(), url.getHost(), url.getPort(), url.getPath(), url.getQuery(), url.getRef()); 

url = new URL(uri.toASCIIString()); 

トリックは、URLにURIを変換しています。ほとんどの回答はURI.toURL()メソッド呼び出しで終了しました。このメソッドは、空白文字と文字以外の文字を正しくエンコードしますが、ASCII以外の文字はエンコードしません。メソッドURI.toASCIIString()はその問題に対する答えです。

+0

偉大な発見!ありがとう、魅力のような作品! (私はURLに埋め込まれたサイリル文字を持ち、URLEncoder.encode()はそれらをエンコードできませんでした)。 – dimsuz