php編碼解碼

2021-06-27 15:15:29 字數 4149 閱讀 8975

(一)mime

編碼和解碼:

1,base64_decode ()

對使用 

mime base64 

編碼的資料進行解碼

使用方式:string base64_decode ( string $encoded_data )

base64_decode() 對 

encoded_data 

進行解碼,返回原始資料,失敗則返回 

false。

返回的資料可能是二進位制的。

2,base64_encode() 

使用 mime base64 

對資料進行編碼

使用方式:string base64_encode ( string $data )

base64_encode() returns 使用 

base64 

對 data 

進行編碼。

設計此種編碼是為了使二進位制資料可以通過非純 8-bit 

的傳輸層傳輸,

例如電子郵件的主體。

base64-encoded 資料要比原始資料多占用 

33% 

左右的空間。

(二)url

編碼和解碼:

1,(1

)urlencode:將字串以

url編碼

返回字串,此字串中除了 -_. 

之外的所有非字母數字字元都將被替換成百分號(

%)後跟兩位十六進製制數,空格則編碼為加號(

+)。此編碼與 

www 

表單 post 

資料的編碼方式是一樣的,同時與 

的**型別編碼方式一樣。由於歷史原因,此編碼在將空格編碼為加號(

+)方面與 

rfc1738 

編碼(參見 

rawurlencode()

)不同。此函式便於將字串編碼並將其用於 

url (2)

rawurlencode

:返回字串,此字串中除了 

-_. 

之外的所有非字母數字字元都將被替換成百分號(

%)後跟兩位十六進製制數。這是在 

rfc 1738 

中描述的編碼,是為了保護原義字元以免其被解釋為特殊的 

url 

定界符,同時保護 

url 

格式以免其被傳輸**(像一些郵件系統)使用字元轉換時弄亂。 (3

)urlencode和

rawurlencode

兩個方法在處理字母數字,特殊符號,中文的時候結果都是一樣的,唯一的不同是對空格的處理,

urlencode

處理成「+」,

rawurlencode

處理成「

%20」 (4

),urlencode是這樣編碼的 

①數字和字母不變。

②空格變為"+"號。

③其他被編碼成"%"

加上他們的

ascii

的十六進製制,規律是這樣的 

④urldecode:本函式將 

url 

編碼後字串還原成未編碼的樣子。編碼使用 

%## 

的格式。

2,(1)

urldecode

:解碼已編碼的 

url 

字串

使用方式:string urldecode ( string str)

解碼給出的已編碼字串中的任何 %##

。返回解碼後的字串。

(2)rawurldecode -- 對已編碼的 

url 

字串進行解碼

string rawurldecode ( string str)

返回字串,此字串中百分號(%

)後跟兩位十六進製制數的序列都將被替換成原義字元。 (3

)rawurldecode() 

不會把加號(

'+')解碼為空格,而 

urldecode() 

可以。

(三)form

表單中的

post

提交:

(1)編碼:客戶端所要傳送的資料也要使用

urlencode編碼

html檔案中有

(字符集

utf-8

或gbk

),post

會使用此處指定的編碼方式進行編碼,所以這行**要放在

html

的最前端,一是為了避免亂碼,而是為了制定

post

提交資料的

urlencode

編碼方式

(2)解碼:伺服器端(tomcat

)如果使用預設預設設定,也沒有過濾器,則使用

iso-8859-1

進行解碼

(四)get

提交方式:

(1)編碼:客戶端把資料串放在請求的url

後作為引數,如果出現中文或特殊字元,會亂碼,所以,

url拼接完成後,會進行

url編碼

encode

,在傳送給伺服器,(除英文外都要進行編碼,避免亂碼)

(2)get方式的

url編碼方式是由瀏覽器決定的,不同的瀏覽器編碼方式不同,一般,中文使用

gbk,設定瀏覽器也可以使用

utf-8

,然後在使用

iso-8859-1

的編碼方式轉換成二進位制一起傳送出去

(3)解碼:伺服器端先進行iso-8859-1

解碼,(一般是,這是由伺服器決定的)

(五)md5編碼和解碼

--對一段資訊

message

產生資訊摘要

message-digest

,以防止被篡改 (1

)md5

將整個檔案當作乙個大文字資訊,通過其不可逆的字串變換演算法,產生了這個唯一的

md5md5

時就會發現資訊摘要不相同,由此可以確定你得到的只是乙個不正確的檔案。如果再有乙個第三方的認證機構,用

md5還可以防止檔案作者的"抵賴

",這就是所謂的數字簽名應用。 (

2)md5還廣泛用於加密和解密技術上。比如在

unix

系統中使用者的密碼就是以

md5(或其它類似的演算法)經加密後儲存在

檔案系統

中。當使用者登入的時候,系統把使用者輸入的密碼計算成md5

值,然後再去和儲存在檔案系統中的

md5值進行比較,進而確定輸入的密碼是否正確。通過這樣的步驟,系統在並不知道使用者密碼的

明碼的情況下就可以確定使用者登入系統的合法性。這不但可以避免使用者的密碼被具有系統管理員許可權的使用者知道,而且還在一定程度上增加了密碼被破解的難度。

(六)php

中自帶的加密函式的比較:

1,不可逆的加密函式為:

md5()

、crypt()

md5() 用來計算 

md5 

哈稀。語法為:

string md5(string str);

crypt() 將字串用 

unix 

的標準加密 

des 

模組加密。這是單向的加密函式,無法解密。欲比對字串,將已加密的字串的頭二個字元放在 

salt 

的引數中,再比對加密後的字串。

語法為:string crypt(string str, string [salt]);

2,可逆轉的加密為:

base64_encode()

、urlencode() 

相對應的解密函式:base64_decode() 

、urldecode()

base64_encode() 將字串以 

mime base64 

string base64_encode(string data); 

解密函式為:

string base64_decode(string encoded_data); 

將復回原樣

urlencode() 將字串以 

url 

編碼。例如空格就會變成加號。語法為:

string urlencode(string str);

它的解密函式為:string urldecode(string str); 

將復回原樣

PHP解碼unicode編碼

function unicode decode name arr json decode json,true if empty arr return return arr str 方法二 轉換編碼,將unicode編碼轉換成可以瀏覽的utf 8編碼 pattern w u w i preg matc...

PHP解碼chunked編碼的資料

在使用fsockopen獲取網頁內容時,服務端有時會返回chunked編碼 頭資訊為transfer encoding chunked 的資料,新版的php中並不包含http chunked decode函式,根據http協議chunked編碼的規則,不難自己實現http chunked decod...

php 編碼和解碼的函式

url urlencode 編碼 urldecode 解碼 url與陣列互 字元轉為html實體 htmlentities html entity decode 所有字元轉換為 html 實體 htmlspecialchars htmlspecialchars decode 將特殊字元 小於 和 大...