項目查詢背景:目前項目中,本地文件全部使用UTF-8進行編碼,Android網絡訪問全部采用Base64加密傳輸,因此考慮Base64和Url編碼是否會有沖突,查詢的結果是沒有沖突,可以直接放在Url中穩定傳輸。
以下是查詢的結果,方便以后查詢。
Base64編碼詳解:http://www.cnblogs.com/lifesting/archive/2012/07/12/2587923.html
以下內容引用地址:http://hi.baidu.com/westfruit/item/bc09df16c7ae5d761009b5d6
Base64編碼可用於在HTTP環境下傳遞較長的標識信息。例如,在Java Persistence系統Hibernate中,就采用了Base64來將一個較長的唯一標識符(一般為128-bit的UUID)編碼為一個字符串,用作HTTP表單和HTTP GET URL中的參數。在其他應用程序中,也常常需要把二進制數據編碼為適合放在URL(包括隱藏表單域)中的形式。此時,采用Base64編碼不僅比較簡短,同時也具有不可讀性,即所編碼的數據不會被人用肉眼所直接看到。
然而,標准的Base64並不適合直接放在URL里傳輸,因為URL編碼器會把標准Base64中的“/”和“+”字符變為形如“%XX”的形式,而這些“%”號在存入數據庫時還需要再進行轉換,因為ANSI SQL中已將“%”號用作通配符。
為解決此問題,可采用一種用於URL的改進Base64編碼,它不在末尾填充'='號,並將標准Base64中的“+”和“/”分別改成了“*”和“-”,這樣就免去了在URL編解碼和數據庫存儲時所要作的轉換,避免了編碼信息長度在此過程中的增加,並統一了數據庫、表單等處對象標識符的格式。
另有一種用於正則表達式的改進Base64變種,它將“+”和“/”改成了“!”和“-”,因為“+”,“*”以及前面在IRCu中用到的“[”和“]”在正則表達式中都可能具有特殊含義。
此外還有一些變種,它們將“+/”改為“_-”或“._”(用作編程語言中的標識符名稱)或“.-”(用於XML中的Nmtoken)甚至“_:”(用於XML中的Name)。 []在迅雷下載地址中的應用 很多下載類網站都提供“迅雷下載”的鏈接,其地址通常是加密的迅雷專用下載地址。
如thunder://QUFodHRwOi8vd3d3LmJhaWR1LmNvbS9pbWcvc3NsbTFfbG9nby5naWZaWg==
其實迅雷的“專用地址”也是用Base64加密的,其加密過程如下:
一、在地址的前后分別添加AA和ZZ
如www.baidu.com/img/sslm1_logo.gif變成
AAwww.baidu.com/img/sslm1_logo.gifZZ
二、對新的字符串進行Base64編碼
如AAwww.baidu.com/img/sslm1_logo.gifZZ用Base64編碼得到
QUFodHRwOi8vd3d3LmJhaWR1LmNvbS9pbWcvc3NsbTFfbG9nby5naWZaWg==
三、在上面得到的字符串前加上“thunder://”就成了
thunder://QUFodHRwOi8vd3d3LmJhaWR1LmNvbS9pbWcvc3NsbTFfbG9nby5naWZaWg==