我正在尝试使用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用空格替换它?
答案 0 :(得分: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" );
这可能对你有用。通常,建议对解码值而不是编码值进行归一化,因为每个解码值有许多可能的编码。
答案 1 :(得分:0)
基于this我会猜测在这个值附近加上单引号会起作用......