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

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



發佈了34 篇原創文章 · 獲贊 7 · 訪問量 11萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章