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”的空间

您的目标 servlet 正在执行替换。无论 "/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 回答