You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java replaceAll失效:Android中JSON文件URL空格转%20失败

解决Android中JSON带空格文件名的转义问题

我懂你遇到的麻烦了——JSON里的PDF文件名带空格,浏览器能自动转成%20,但在Android里直接用就出问题,手动用replaceAll又没达到预期效果对吧?

给你两个靠谱的解决方案,比手动替换空格靠谱多了:

方法一:用URLEncoder做标准URL编码

Android自带的URLEncoder类会按照URL编码规则处理所有需要转义的字符,不只是空格,能避免遗漏其他特殊字符的情况。代码示例:

// 从JSON中取出原始文件名
String originalPdfName = hit.getString("img");
try {
    // 以UTF-8编码格式处理,这是URL编码的标准格式
    String encodedPdfName = URLEncoder.encode(originalPdfName, "UTF-8");
    // 接下来就用这个编码后的文件名去构建请求或者访问资源
} catch (UnsupportedEncodingException e) {
    // 捕获编码异常,实际开发里可以加个日志或者默认处理
    e.printStackTrace();
}

方法二:用Uri.encode()快速编码

如果只是简单处理文件名的转义,Uri.encode()也是个不错的选择,代码更简洁:

String originalPdfName = hit.getString("img");
String encodedPdfName = Uri.encode(originalPdfName);

为什么不推荐手动replaceAll?

replaceAll(" ", "%20")只能处理空格这一种情况,但文件名里可能还藏着其他需要转义的特殊字符(比如&、=、+这些),系统自带的编码工具会严格按照URL规则处理所有特殊字符,稳定性和兼容性都更强。

如果是访问本地文件的话,其实空格不需要转义,直接用原始文件名就可以;但如果是作为网络请求的参数或路径的一部分,一定要做标准的URL编码哦。

内容的提问来源于stack exchange,提问作者Dipak

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 09:24:43