編寫JSP時,最麻煩的就是編碼的問題,而今天我就遇到了"明明所有的Page都設成UTF-8",但顯示出來仍然是亂碼!
研究了好多天,終於知道問題在那了!原來是Post/Get的差別,後來Google了一下,有位大大這麼寫到:
原文:
Get 和Post都是HTTP的标准协议动词,用于编码和传送变量名和变量值,无论Get 和Post都是通过编码后传送数据。
是这个问题解释起来有点难,但有两点是可以肯定的:
一是:get方式传送数据时附加参数被认为是一个查询字符串,变量名/变量值作为URL的一部分被传送,假如读取数据后,不立即跳转到别的页面上,地址栏上会看得到有关的参数和值,并与表单一一对应,如地址栏上会看到xx=??&xx=??。而post方式传送,虽然也是被URL编码的。然而,变量名/变量值不作为URL的一部分被传送,而是放在实际的HTTP请求消息内部被传送。从地址栏上看不到。
二是:get 默认(只是默认)是以使用MIME类型application/x-www-form-urlencoded的urlencoded文本的格式传递参数。Urlencoding是一种字符编码,保证被传送的参数由遵循规范的文本组成。post则可以通过页面指定的编码方式进行编码。目前大体有两类:一是ANSI的ASCII字符集,不同的国家和地区制定了不同的标准,由此产生了GB2312、BIG5, JIS等等,且互不兼容,并且与之后出现的国际性的UNICODE标准编码的UTF-8等也不兼容,因此稍有不慎便出现乱码。
繁體:
Get 和Post都是HTTP的標準協議動詞,用於編碼和傳送變量名和變量值,無論Get 和Post都是通過編碼後傳送數據。
是這個問題解釋起來有點難,但有兩點是可以肯定的:
一是:get方式傳送數據時附加參數被認為是一個查詢字符串,變量名/變量值作為URL的一部分被傳送,假如讀取數據後,不立即跳轉到別的頁面上,地址欄上會看得到有關的參數和值,並與表單一一對應,如地址欄上會看到xx=??&xx=??。 而post方式傳送,雖然也是被URL編碼的。 然而,變量名/變量值不作為URL的一部分被傳送,而是放在實際的HTTP請求消息內部被傳送。 從地址欄上看不到。
二是:get 默認(只是默認)是以使用MIME類型application/x-www-form-urlencoded的urlencoded文本的格式傳遞參數。 Urlencoding是一種字符編碼,保證被傳送的參數由遵循規範的文本組成。 post則可以通過頁面指定的編碼方式進行編碼。 目前大體有兩類:一是ANSI的ASCII字符集,不同的國家和地區製定了不同的標準,由此產生了GB2312、BIG5, JIS等等,且互不兼容,並且與之後出現的國際性的UNICODE標準編碼的UTF-8等也不兼容,因此稍有不慎便出現亂碼。
資料來源:http://wenwen.soso.com/z/q188275796.htm