3

URLに漢字を使用したURL接続の設定に問題があります。ラテン文字で動作します:

String xstr = "维也纳恩斯特哈佩尔球场" ;
URI uri = new URI("http","ajax.googleapis.com","/ajax/services/language/detect","v=1.0&q="+xstr,null);   
URL url = uri.toURL(); 
URLConnection connection = url.openConnection();
InputStream is = connection.getInputStream() ;

getInputStream()呼び出しの結果は次のとおりです。

java.lang.IllegalArgumentException: Invalid uri 'http://ajax.googleapis.com/ajax/services/language/detect?v=1.0&q=???????????': Invalid query
4

4 に答える 4

7

URI.toURL()この問題は、非ASCII文字をパーセントエンコードしないという事実が原因で発生します。代わりに以下を使用してください。

URL url = new URL(uri.toASCIIString());  
于 2011-01-28T18:26:15.457 に答える
2

上記のaxtavtの答えは、私を狂気から救ってくれました、ありがとう! コメントは1つだけです(回答の下にコメントする方法がわかりませんでした:)

URL で開始する場合は、URI を作成する前に引用符をエンコードする必要があります。

String s = "your_url?with=\"quotes\"";
URI su = new URI (s.replaceAll("\"", "%22");
URL ur = new URL( su.toASCIIString());
于 2011-05-23T21:38:25.443 に答える
0

「UTF-8」文字セットに関連していると思います。詳細については、このトピックをご覧ください。また、Javaでこの中国語をご覧ください。

于 2011-01-28T17:53:01.630 に答える
0

URI RFC (セクション 2.4 を参照) によると、非 US-ASCII 文字は URI では有効ではありません。それらをエンコードする必要があります。

于 2011-01-28T18:03:50.567 に答える