WEB项目中的中文乱码问题
2019獨(dú)角獸企業(yè)重金招聘Python工程師標(biāo)準(zhǔn)>>>
目錄:
一、Request中文亂碼
二、tomcat 中文亂碼
一、Request中文亂碼
解決request中文亂碼的問題
request.setCharacterEncoding(charset);必須寫在第一次使用request.getParameter
()之前,
這樣才能保證參數(shù)是按照已經(jīng)設(shè)置的字符編碼來獲取。
response.setCharacterEncoding(charset);必須寫在PrintWriter out =
request.getWriter()之前,
這樣才能保證out按照已經(jīng)設(shè)置的字符編碼來進(jìn)行字符輸出。
通過過濾器,我們可以保證在Servlet或JSP執(zhí)行之前就設(shè)置好了請(qǐng)求和響應(yīng)的字符編碼
。
但是這樣并不能完全解決中文亂碼問題:
對(duì)于post請(qǐng)求,無論是“獲取參數(shù)環(huán)節(jié)”還是“輸出環(huán)節(jié)"都是沒問題的;
對(duì)于get請(qǐng)求,"輸出環(huán)節(jié)"沒有問題,但是"獲取參數(shù)環(huán)節(jié)"依然出現(xiàn)中文亂碼,所以在輸
出時(shí)直接將亂碼輸出了。
原因是post請(qǐng)求和get請(qǐng)求存放參數(shù)位置是不同的:
post方式參數(shù)存放在請(qǐng)求數(shù)據(jù)包的消息體中。get方式參數(shù)存放在請(qǐng)求數(shù)據(jù)包的請(qǐng)求行的
URI字段中,
以?開始以param=value¶me2=value2的形式附加在URI字段之后。而
request.setCharacterEncoding(charset);
只對(duì)消息體中的數(shù)據(jù)起作用,對(duì)于URI字段中的參數(shù)不起作用。
當(dāng)使用request.setCharacterEncoding(charset);時(shí),只能解決表單方法為POST的中文
亂碼情況,而方法為GET的依然為亂碼。
解決GET亂碼:
String?str?=request.getParameter("URL后面的變量名");byte?b[]?=str.getBytes("ISO-8859-1");str?=?newString(b);,
轉(zhuǎn)載于:https://my.oschina.net/u/264186/blog/637924
總結(jié)
以上是生活随笔為你收集整理的WEB项目中的中文乱码问题的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 深入理解javascript之this
- 下一篇: 内存泄漏分析实例