前臺傳遞參數,亂碼問題

其實我發現前臺給後臺傳遞參數出現亂碼的問題,主要出現在傳遞參數的時候所採用的傳遞類型的方法,“get”和"post",get和post的區別,簡單說一下:

1、Get是用來從服務器上獲得數據,而Post是用來向服務器上傳遞數據。 2、 Get將表單中數據的按照variable=value的形式,添加到action所指向的URL後面,並且兩者使用“?”連接,而各個變量之間使用 “&”連接;Post是將表單中的數據放在form的數據體中,按照變量和值相對應的方式,傳遞到action所指向URL。 3、 Get是不安全的,因爲在傳輸過程,數據被放在請求的URL中,而如今現有的很多服務器、代理服務器或者用戶代理都會將請求URL記錄到日誌文件中,然後 放在某個地方,這樣就可能會有一些隱私的信息被第三方看到。另外,用戶也可以在瀏覽器上直接看到提交的數據,一些系統內部消息將會一同顯示在用戶面前。 Post的所有操作對用戶來說都是不可見的。 4、Get傳輸的數據量小,這主要是因爲受URL長度限制;而Post可以傳輸大量的數據,所以在上傳文件只能使用Post(當然還有一個原因,將在後面的提到)。 5、Get限制Form表單的數據集的值必須爲ASCII字符;而Post支持整個ISO10646字符集。 6、Get是Form的默認方法。

具體可以看看:http://www.cnblogs.com/hyddd/archive/2009/03/31/1426026.html

這個地方就可以發現如果在前臺的時候沒有亂碼的話,那麼用get來傳輸很容易亂碼的,這主要是由於提交的參數中的中文沒有采用URL編碼,使用post完全可以避免這種情況了。所以在資源不是很緊張的時候採用post是不錯的選擇可以避免好多事。

當然如果前臺亂碼,在js中就有相應的方法來解碼在傳遞了,我找了一點網上別人寫的東西記錄一下:

encodeURIComponent 方法
將文本字符串編碼爲一個統一資源標識符 (URI) 的一個有效組件。

encodeURIComponent(encodedURIString)

必選的encodedURIString參數代表一個已編碼的 URI 組件。

說明
encodeURIComponent方法返回一個已編碼的 URI。如果您將編碼結果傳遞給decodeURIComponent,那麼將返回初始的字符串。因爲encodeURIComponent方法對所有的字符編碼,請注意,如果該字符串代表一個路徑,例如/folder1/folder2/default.html,其中的斜槓也將被編碼。這樣一來,當該編碼結果被作爲請求發送到 web 服務器時將是無效的。如果字符串中包含不止一個 URI 組件,請使用encodeURI方法進行編碼。




escape 方法
返回一個可在所有計算機上讀取的編碼 String 對象。

function escape(charString : String) : String
參數
charString
必選。要編碼的任何 String 對象或文本。
備註
escape 方法返回一個包含 charstring 內容的字符串值(Unicode 格式)。所有空格、標點、重音符號以及任何其他非 ASCII 字符都用 %xx 編碼替換,其中 xx 等於表示該字符的十六進制數。例如,空格返回爲“%20”。

字符值大於 255 的字符以 %uxxxx 格式存儲。

注意 escape 方法不能用來對“統一資源標識符”(URI) 進行編碼。對其編碼應使用 encodeURI 和 encodeURIComponent 方法。
要求
版本 1

請參見
encodeURI 方法 | encodeURIComponent 方法 | String 對象 | unescape 方法

適用於:Global 對象

encodeURI 方法
返回編碼爲有效的統一資源標識符 (URI) 的字符串。

function encodeURI(URIString : String) : String
參數
URIString
必選。表示編碼 URI 的字符串。
備註
encodeURI 方法返回一個已編碼的 URI。如果將編碼結果傳遞給 decodeURI,則將返回初始的字符串。encodeURI 不對下列字符進行編碼:“:”、“/”、“;”和“?”。請使用 encodeURIComponent 對這些字符進行編碼。

要求
版本 5.5

請參見
decodeURI 方法 | decodeURIComponent 方法

適用於:Global 對象

encodeURIComponent 方法
返回編碼爲統一資源標識符 (URI) 的有效組件的字符串。

function encodeURIComponent(encodedURIString : String) : String
參數
encodedURIString
必選。表示編碼 URI 組件的字符串。
備註
encodeURIComponent 方法返回一個已編碼的 URI。如果將編碼結果傳遞給 decodeURIComponent,則將返回初始的字符串。因爲 encodeURIComponent 方法將對所有字符編碼,請注意,如果該字符串代表一個路徑,例如 /folder1/folder2/default.html,則其中的斜槓也將被編碼,這樣,當該字符串作爲請求發送到 Web 服務器時它將是無效的。如果字符串中包含多個 URI 組件,請使用 encodeURI 方法進行編碼。

要求
版本 5.5

請參見
decodeURI 方法 | decodeURIComponent 方法

適用於:Global 對象

unescape 方法
從用 escape 方法編碼的 String 對象中返回已解碼的字符串。

function unescape(charString : String) : String
參數
charString
必選。要解碼的 String 對象或文本。
備註
unescape 方法返回一個包含 charstring 內容的字符串值。所有以 %xx 十六進制形式編碼的字符都用 ASCII 字符集當中等效的字符代替。

以 %uxxxx 格式(Unicode 字符)編碼的字符用十六進制編碼 xxxx 的 Unicode 字符代替。

注意 unescape 方法不應用於解碼“統一資源標識符”(URI)。請改用 decodeURI 和 decodeURIComponent 方法。
要求
版本 1

請參見
decodeURI 方法 | decodeURIComponent 方法 | escape 方法 | String 對象

適用於:Global 對象

decodeURI 方法
返回一個已編碼的統一資源標識符 (URI) 的非編碼形式。

function decodeURI(URIstring : String) : String
參數
URIstring
必選。表示編碼 URI 的字符串。
備註
使用 decodeURI 方法代替已經過時的 unescape 方法。

decodeURI 方法返回一個字符串值。

如果 URIString 無效,將發生 URIError。

要求
版本 5.5

請參見
decodeURIComponent 方法 | encodeURI 方法

適用於:Global 對象

decodeURIComponent 方法
返回統一資源標識符 (URI) 的一個已編碼組件的非編碼形式。

function decodeURIComponent(encodedURIString : String) : String
必選的 encodedURIString 參數是一個表示已編碼的 URI 組件的值。

備註
URIComponent 是一個完整的 URI 的一部分。

如果 encodedURIString 無效,則將產生 URIError。

要求
版本 5.5

請參見
decodeURI 方法 | encodeURI 方法


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章