实际上,您应该使用URI编码
“无效”字符。由于该字符串实际上包含完整的URL,因此很难对其进行URI编码。您不知道
/应该考虑哪些斜杠,哪些不是。您无法
String事先预测到这一点。确实需要在更高层次上解决该问题。那
String是哪里来的
它是硬编码的吗?然后只需相应地自己更改即可。它作为用户输入进来吗?验证并显示错误,让用户自己解决。
无论如何,如果可以确保 仅 是URL中的空格使其无效,那么您也可以仅使用逐个字符串替换
%20:
URI uri = new URI(string.replace(" ", "%20"));或者,如果可以确保 _仅_是最后一个斜杠之后的部分需要进行URI编码,那么也可以在
android.net.Uri实用工具类的帮助下进行操作:
int pos = string.lastIndexOf('/') + 1;URI uri = new URI(string.substring(0, pos) + Uri.enpre(string.substring(pos)));请注意,这
URLEnprer不适用于该任务,因为它旨在按照
application/x-www-form-urlenpred规则对查询字符串参数名称/值进行编码(用于HTML表单)。



