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