URLEncoder仅对字符串中的某些UTF-8字符进行编码

时间:2017-11-23 12:30:13

标签: java encoding utf-8

假设我有一个网址

String url =“http://myweb.com/page1?param1=Financiële resultaten& param2 =consùmer”

我想要URLEncode.encode(url,“UTF-8”)这个字符串。我想只在空间和&符号(&)被编码时保持(ë和ù)不变。所以最终网址应该是

http://myweb.com/page1?param1=Financiële%20resultaten%27param2=consùmer

如何在java中实现这一点?

1 个答案:

答案 0 :(得分:0)

首先,请记住,您应该仅使用URIEncode来编码查询参数。所以你要编码的是'?'字符。

您的问题的另一个问题是,您实际上并不想对整个查询进行编码。因此,没有方法可以为某些特定字符对其进行编码。然后你的问题可以转换成'我怎么能用一些其他角色替换一些角色'。因此,您可能希望对要更改的字符使用replaceAll方法,或者如果要单独编码字符则使用indexOf方法,然后应合并。

开始使用replaceAll方法的方法如下:

String query = "page1?param1=Financiële resultaten&param2=consùmer";
query.replaceAll("\\s+","%20");

然后字符串变为“page1?param1 =Financiële%20resultaten& param2 =consùmer”。