Java URI 和 android Uri 中的 getSchemeSpecificPart() 方法

本文探讨了标准URI的语法结构,并详细分析了Java和Android中URI的getSchemeSpecificPart方法返回的部分如何进行八位组转义编码。通过两个章节,深入理解这一关键方法在不同平台的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 标准 URI 的语法组成

标准的 URI 语法组成如下:
[scheme:]scheme-specific-part[#fragment]
各部分说明请参考:http://www.cjsdn.net/doc/jdk50/java/net/URI.html
getSchemeSpecificPart() 方法即返回中间的 scheme-specific-part 必选部分。

2. getSchemeSpecificPart 返回部分的编码方式:转义八位组

这里只能大概的推测一下,具体还需要验证:
我的理解:该方法返回的 scheme-specific-part 部分已经进行了转义处理,比如当中的一些特殊字符 “%” “#”等若要在该方法中正常返回,则需要将特殊字符的转义编码(一般是utf-8的编码形式)写进URI才能识别出来,比如 “#” 必须用 “%23” 代替。其它非特殊字符则不需写成转义形式(也没有这一说)。

“%” 和 “#” 在 URI 中是两个特殊的字符,"%" 是转义的开头、"#" 是标识 fragment 的开始,比如,你在创建文件的 URI 的文件名中一定要包含这两个字符,可以这样处理:

try {
    if (filename.contains("%") || filename.contains("#")) {
        filename = filename.replaceAll("%", URLEncoder.encode("%", "utf-8")); //注意,一定要先处理完 %,原因自己想吧,呵呵
        filename = filename.replaceAll("#", URLEncoder.encode("#", "utf-8"));
    }
} catch (UnsupportedEncodingException e) {}

然后将 filename 作为你的 URI 文件名部分就行了!

3. 参考

http://www.cjsdn.net/doc/jdk50/java/net/URI.html



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值