转换URL GET / POST请求java中的特殊字符

时间:2013-08-04 14:15:21

标签: java string web get

我有一个问题,我如何用Java转换:

String word="Conformément";

这样:

String word = "Conform%C3%A9ment";

当字符串通过网络传输时,第二个被转换。

提前致谢, 米哈伊尔

3 个答案:

答案 0 :(得分:1)

你可以做到

String encodedWord = URLEncoder.encode(word, "UTF-8");

答案 1 :(得分:0)

您可能需要按this其他主题中的建议使用URLEncoder.encode()

答案 2 :(得分:0)

这取决于您希望插入此单词的URI的哪个部分。

最好的办法是使用支持URI Templates的库。而且(无耻的插件)I have one which works

只需创建模板并填写正确的值即可。我也可以帮你创建模板。

不,URLEncoder.encode() 为此工作工作。引用该项目的自述文件:

  

这种方法存在一种非常普遍的误解。它不编码用于URI的字符串,它编码用于POST数据的字符串,即用于application / x-www-form-urlencoded数据的字符串;在这种编码中,空格变为+,而不是%20!

以下是单词将出现在查询部分中的模板示例:

http://my.site/some/where?word={word}

使用上面的库,代码为:

final URITemplate tmpl = new URITemplate("http://my.site/some/where?word={word}");
final VariableMapBuilder builder = VariableMap.newBuilder();
builder.addScalarValue("word", "Conformément");
tmpl.toString(builder.freeze()); // returns the correct result
// Or:
tmpl.toURI(builder.freeze());
tmpl.toURL(builder.freeze());