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