java 中文亂碼處理。
參考
http://china.eceel.com/article/study_for_character_encoding_java.htm
http://upurban.com/bbs/viewtopic.php?t=246
1。什么是utf-8,什么是ISO-8859-1,什么是GB2312,還有什么是unicode
2。java 程序的字符的表示格式
3。jsp 程序中文顯示處理實(shí)例
3。1
<%@ page pageEncoding="ISO-8859-1"%>和<%@ page pageEncoding="GB2312"%>和<%@ page
pageEncoding="UTF-8"%>各自的意思是什么,他們是否只對(duì)post提交有效!
request.setCharacterEncoding("UTF-8")是什么意思?有什么區(qū)別?還有
response.setCharacterEncoding("UTF-8"),優(yōu)先于下邊
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
setCharacterEncoding()該函數(shù)用來(lái)設(shè)置http請(qǐng)求或者相應(yīng)的編碼。
對(duì)于request,是指提交內(nèi)容的編碼,指定后可以通過(guò)getParameter()則直接獲得正確的字符串,如果不
指定,則默認(rèn)使用iso8859-1編碼,需要進(jìn)一步處理。參見(jiàn)下述"表單輸入"。值得注意的是在執(zhí)行
setCharacterEncoding()之前,不能執(zhí)行任何getParameter()。java doc上說(shuō)明:This method must be
called prior to reading request parameters or reading input using getReader()。而且,該指定
只對(duì)POST方法有效,對(duì)GET方法無(wú)效。分析原因,應(yīng)該是在執(zhí)行第一個(gè)getParameter()的時(shí)候,java將會(huì)
按照編碼分析所有的提交內(nèi)容,而后續(xù)的getParameter()不再進(jìn)行分析,所以setCharacterEncoding()無(wú)
效。而對(duì)于GET方法提交表單是,提交的內(nèi)容在URL中,一開(kāi)始就已經(jīng)按照編碼分析所有的提交內(nèi)容,
setCharacterEncoding()自然就無(wú)效。
對(duì)于response,則是指定輸出內(nèi)容的編碼,同時(shí),該設(shè)置會(huì)傳遞給瀏覽器,告訴瀏覽器輸出內(nèi)容所采用的
編碼。
3.2. jsp輸出
指定文件輸出到browser是使用的編碼,該設(shè)置也應(yīng)該置于文件的開(kāi)頭。例如:<%@ page
contentType="text/html; charset= GBK" %>。該設(shè)置和response.setCharacterEncoding("GBK")等效。
4。java EE程序利用過(guò)濾器 處理中文問(wèn)實(shí)例
提交數(shù)據(jù)的編碼格式
tomcat默認(rèn)提交格式是ISO-8859-1
可以通過(guò)設(shè)置過(guò)濾器(只針對(duì)post提交)或修改server.xml 的URIencoding 編碼格式(只針對(duì)get提交)
達(dá)到你想要的 數(shù)據(jù)提交編碼格式。
總結(jié)
---by mylu 18:26 2007-5-20