請求引數編碼處理學習筆記

2021-10-22 17:43:30 字數 1262 閱讀 5552

post請求引數編碼處理

如果瀏覽器沒有在content-type標頭設定字元編碼(eg: content-type: text/html;charset=utf-8)

此時使用request.getcharacterencoding()返回值為null

在這種情況下,容器若使用預設編碼處理是iso-8859-1,而瀏覽器使用utf-8傳送ascii字元的請求引數。

相當於瀏覽器做了string text = urlencoder.encode(「林」,「utf-8」) ;

而servlet取得引數,若容器預設使用iso-8859-1編碼,相當於string text = urldecoder.decode("%e6%9e%97",「iso-8859-1」) ; 而出現亂碼。

可以使用request.setcharacterencoding()指定獲取post引數時使用的編碼。如果瀏覽器以utf-8傳送請求,設定request編碼後,

相當於要求容器做了string text = urldecoder.decode("%e6%9e%97",「utf-8」) ;這樣就能取得正確的「林」中文字元了。

get請求引數編碼處理

request的setcharacterencoding()無效,是因為處理uri的是http伺服器,而非web容器。

在tomcat 7或之前版本附帶http伺服器處理uri使用預設編碼是iso-8859-1,若瀏覽器使用utf-8傳送請求。

servlet中取得請求引數時相當於:string name = urldecoder.decode("%e6%9e%97",「iso-8859-1」) ;

按照string text = new string(name.getbyte(「iso-8859-1」),「utf-8」) ;就能得到「林」了。

加深理解**片段

@slf4j

public

class

parameterencodedecodetest

", decode)

;// 地到iso-8859-1字串之前的utf-8位元組陣列,並使用utf-8轉成字串

string content =

newstring

(decode.

getbytes

("iso-8859-1"),

"utf-8");

log.

info

("content : {}"

, content)

;//張三

}}

異常處理學習筆記

arm處理器的工作模式 使用者模式user 快速中斷模式fiq 處部中斷模式irq 特權模式supervisor 資料訪問中止模式abort 未定義指令中止模式undefined 系統模式system 1一上電,cpu處於 supervisor svc 管理模式 2發生中斷,cpu進入 riq 外部...

批處理學習筆記

前言 批處理,也稱批處理指令碼。windows 環境下做開發,批處理 是乙個非常使用的工具,利用這個工具可以為專案開發提高很大的效率。window提供了很多的命令,通過批處理指令碼,組織這些命令,能夠很快速的做到很多事情,大多數是操作資料夾,操作檔案,啟動其他命令等等。具體例子有 工程打包輸出可執行...

異常處理學習筆記

arm處理器的工作模式 使用者模式 user 快速中斷模式 fiq 處部中斷模式 irq 特權模式supervisor 資料訪問中止模式 abort 未定義指令中止模式 undefined 系統模式 system 1 一上電,cpu處於 supervisor svc 管理模式 2 發生中斷,cpu進...