java中為什么過濾器只能解決post請求亂碼(=@__ @=),這是為什么呀
filter:配置filter的Encoding=utf-8
@Override
protected void doFilterInternal(
HttpServletRequest request, HttpServletResponse response, FilterChain filterChain)
throws ServletException, IOException {
if (this.encoding != null && (this.forceEncoding || request.getCharacterEncoding() == null)) {
request.setCharacterEncoding(this.encoding);
if (this.forceEncoding) {
response.setCharacterEncoding(this.encoding);
}
}
filterChain.doFilter(request, response);
}
2 回答

慕尼黑的夜晚無繁華
TA貢獻1864條經驗 獲得超6個贊
并不是只能解決post
編碼,而是characterEncoding
只對body
有效。
http有很多method
比如像put
方法也是有body
的。
即使你使用post
如果url
中存在中文query parameters
一樣需要針對url
設置編碼。

湖上湖
TA貢獻2003條經驗 獲得超2個贊
1、因為很少有人用GET方式傳遞中文內容,至于過濾器為什么只解決POST方式中文傳遞亂碼問題,我想不是技術性的問題,可能是設計者有意為之,希望引導我們多使用POST方式。就好比要求大貨車像客車一樣能載很多人,對于設計大貨車的人而言,他是不會太考慮這樣的情況。
2、GET方式傳遞中文亂碼的問題也不是不能解決,解決方法也很簡單,但是不推薦,因這種方法對POST方式不通用。樣例代碼如下:
String username = request.getParameter("username");
username = new String(username.getBytes( "iso-8859-1" ), "utf-8");
添加回答
舉報
0/150
提交
取消