【发布时间】:2013-08-04 22:23:55
【问题描述】:
我有一个问题如何在 Java 中转换:
String word="Conformément";
到
这个:
String word = "Conform%C3%A9ment";
第二个在字符串通过web时进行转换。
提前致谢, 米哈伊尔
【问题讨论】:
我有一个问题如何在 Java 中转换:
String word="Conformément";
到
这个:
String word = "Conform%C3%A9ment";
第二个在字符串通过web时进行转换。
提前致谢, 米哈伊尔
【问题讨论】:
你可以的
String encodedWord = URLEncoder.encode(word, "UTF-8");
【讨论】:
这取决于您希望将这个词插入到 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());
【讨论】:
您可能希望按照this 其他线程中的建议使用URLEncoder.encode()。
【讨论】: