0

私は次のように使用しようとしてMessageFormatいます、

String downloadsUrl = "http://host/downloads?tags={0}";
Object[] formatArgs = {"sequence%20diagram"};
String url = new MessageFormat(downloadsUrl).format(formatArgs);

しかし、最終的な URL 文字列を見ると、 http://host/downloads?tags=sequenceダイアグラムになっています。

%20 を保持し、MessageFormat でスペースに置き換えないようにする方法はありますか?

4

2 に答える 2

0

指定したコードは、上記のコードが「http:// host / downloads?tags = sequence%20diagram」を返すスペースを追加しません。

ターゲットサーブレットが置換を実行しています。「/downloads」がマップされているものはすべて、tagsパラメーターを解析し、URLデコードを実行します。次のように、可能なエンコーディングを再構築できます。次のUnsupportedEncodingExceptionを処理する必要があります。

String encoded = URLEncoder.encode( request.getParameter( name ), "UTF8" );

残念ながら、これは可能なエンコーディングにすぎず、デフォルトではスペースを「+」に変換します。「%20」を取り戻すには、に頼る必要があります

encoding = encoding.replaceAll( "+", "%20" );

これはあなたのために働くかもしれないし、そうでないかもしれません。一般に、デコードされた値ごとに多くの可能なエンコードがあるため、エンコードされた値ではなく、デコードされた値で正規化することをお勧めします。

于 2011-12-01T17:56:28.067 に答える
0

これに基づいて、値を一重引用符で囲むとうまくいくと思います...

于 2011-12-01T18:46:54.717 に答える