中文編碼
- 用戶發(fā)起Http請(qǐng)求時(shí),需要存在編碼的地方是URL、Cookie、Parameter。服務(wù)端接收到Http請(qǐng)求后,需要解碼的地方是URL、Cookie和Post表單。servlet處理完請(qǐng)求后,將需要返回給瀏覽器的數(shù)據(jù)再次進(jìn)行編碼,通過socket發(fā)送到用戶瀏覽器中,瀏覽器再通過解碼,將服務(wù)端返回的數(shù)據(jù)渲染后呈現(xiàn)給用戶。
- URL的解碼通過request.getRequestURL()和request.getRequestURI()來完成,默認(rèn)編碼規(guī)則為ISO-8859-1。Header的解碼通過request.getHeader()來完成,默認(rèn)編碼規(guī)則為ISO-8859-1。
常見問題分析
- 字符串在解碼時(shí),所用的字符集與編碼字符集不一致,會(huì)導(dǎo)致漢字變成看不懂的字符。
- 中文字符經(jīng)過不支持中文的ISO-8859-1編碼后,會(huì)變成"?",遇到了不在編碼范圍的字符統(tǒng)一用3f代替,所以都變成了"?"。