


版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、*web xml *web. xml *<filter><filter-name>MyFilter</filter-name><filter-class>cray. util. MyFilter</fiIter一class</filter>filter-mapping<filter-name>MyFilter</filter-name><url-pattern>/*</url-pattern></f訂ter-mapping>MyFilter javapackage er
2、ay. util;import javax servletimport javax servlet http HttpServlet;import java io.IOException;public class MyFilter extends HttpServlet implements Filterprivate FilterConfig filterConfig;public void init (FilterConfig filterConfig) throws ServletException this .filterConfig = filterConfig;public voi
3、d doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain)tryrequest setCharacterEncoding (Z/GBKZ/);filterChain. doFilter (request, response); catch (ServletException sx)filterConfig getServletContext () log(sx getMessageO); catch (IOException iox)filterConfig getServletCo
4、ntext () log(iox getMessageO);public void destroy()1、最基本的亂碼問題。這個(gè)亂碼問題是最簡單的亂碼問題。一般新會(huì)出現(xiàn)。就是頁面編碼不一致導(dǎo) 致的亂碼。page language二"java" pageEncoding二"UTF-8"%><% page content Type 二"tex t/html; chdrse t 二 iso8859T"%<html><head><title> 中文問題 </title><met
5、a http-equiv二"Content-Type" content二"text/html; charset=UTF-8,></head></head><body>我是個(gè)好人</body></html>三個(gè)地方的編碼。第一個(gè)地方的編碼格式為jsp文件的存儲(chǔ)格式。Ecljpse會(huì)根據(jù)這個(gè)編碼格 式保存文件。并編譯jsp文件,包括里面的漢字。第二處編碼為解碼格式。因?yàn)榇鏋閁TF-8的文件被解碼為iso8859-l,這樣如 有中文肯定出亂碼。也就是必須一致。而第二處所在的這一行,可以沒有。缺省也 是使用
6、iso8859-l的編碼格式。所以如果沒有這一行的話,“我是個(gè)好人”也會(huì)出 現(xiàn)亂碼。必須一致才可以。第三處編碼為控制瀏覽器的解碼方式。如果前面的解碼都一致并且無誤的話, 這個(gè)編碼格式?jīng)]有關(guān)系。有的網(wǎng)頁出現(xiàn)亂碼,就是因?yàn)闉g覽器不能確定使用哪種編 碼格式。因?yàn)轫撁嬗袝r(shí)候會(huì)嵌入頁面,導(dǎo)致瀏覽器混淆了編碼格式。出現(xiàn)了亂碼。2、表單使用Post方式提交后接收到的亂碼問題這個(gè)問題也是一個(gè)常見的問題。這個(gè)亂碼也是tomcat的內(nèi)部編碼格式 iso8859-l在搗亂,也就是說post提交時(shí),如果沒有設(shè)置提交的編碼格式,則會(huì)以 iso8859-l方式進(jìn)行提交,接受的jsp卻以u(píng)tf-8的方式接受。導(dǎo)致亂碼。既然
7、這 樣的原因,下面有兒種解決方式,并比較。A、接受參數(shù)時(shí)進(jìn)行編碼轉(zhuǎn)換String str 二 newString (request. getParameter ("something"). getBytes ("ISO-8859T"), "utf- 8);這樣的話,每一個(gè)參數(shù)都必須這樣進(jìn)行轉(zhuǎn)碼。很麻煩。但確實(shí)可以拿到漢字。B、在請(qǐng)求頁面上開始處,執(zhí)行請(qǐng)求的編碼代碼,request. setCharacterEncoding ("UTF-8"),把提交內(nèi)容的字符集設(shè)為 UTF-8。 這樣的話,接受此參數(shù)的頁面就不必在轉(zhuǎn)碼了。直
8、接使用String str = request. getParameter("something");即可得到漢字參數(shù)。但 每頁都需要執(zhí)行這句話。這個(gè)方法也就對(duì)post提交的有效果,對(duì)于get提交和上傳 文件時(shí)的enctype二"mult ipart/form-datd"是無效的。稍后下面單獨(dú)對(duì)這個(gè)兩個(gè)的 亂碼情況再進(jìn)行說明。C、為了避免每頁都要寫 request. setCharacterEncoding (,/UTF-8,/),建議使 用過濾器對(duì)所有jsp進(jìn)行編碼處理。這個(gè)網(wǎng)上有很多例子。請(qǐng)大家自己查閱。3、表單get提交方式的亂碼處理方式。如果使用
9、get方式提交中文,接受參數(shù)的頁面也會(huì)出現(xiàn)亂碼,這個(gè)亂碼的原因 也是tomcat的內(nèi)部編碼格式iso8859-l導(dǎo)致。Tomcat會(huì)以get的缺省編碼方式 iso8859-l對(duì)漢字進(jìn)行編碼,編碼后追加到url,導(dǎo)致接受頁面得到的參數(shù)為亂碼 /、o解決辦法:A、使用上例中的第一種方式,對(duì)接受到的字符進(jìn)行解碼,再轉(zhuǎn)碼。B、Get走的是url提交,而在進(jìn)入url之前已經(jīng)進(jìn)行了 iso8859-l的編碼處 理。要想影響這個(gè)編碼則需要在server, xml的Connector節(jié)點(diǎn)增加 useBodyEncodingForURI=,/true,/屬性配置,即可控制tomcat對(duì)get方式的漢字編碼方式,
10、上面這個(gè)屬性控制 get提交也是用request. setCharacterEncoding ("UTF-8")所設(shè)置的編碼格式進(jìn)行 編碼。所以自動(dòng)編碼為utf-8,接受頁面正常接受就可以了。但我認(rèn)為真正的編碼 過程是,tomcat 乂要根據(jù)<Connector port二"8080"maxThreads二"150" minSpareThreads=,25,/ maxSpareThreads=,75,/enab 1 eLookups=,false,z redirectPort二"8443" acceptCou
11、nt二"100"debu薩"0" connection!imeout二"20000" useBodyEncodingForURI="true" disab 1 eUp 1 oadTimeout=,/1rueURIEncoding二” UTF-8” />里面所設(shè)置的URIEncoding二” UTF-8”再進(jìn)行一次編碼,但是由于已經(jīng)編碼為 utf-&再編碼也不會(huì)有變化了。如果是從url獲取編碼,接受頁面則是根據(jù) URIEncoding二” UTF-8” 來進(jìn)行解碼的。4、上傳文件時(shí)的亂碼解決上傳文件時(shí),
12、form表單設(shè)置的都是enctype=,multipart/form-data,zo這種方 式以流方式提交文件。如果使用apach的上傳組件,會(huì)發(fā)現(xiàn)有很多亂碼想象。這是 因?yàn)閍pach的先期commons-fileupload. jar有bug,取出漢字后進(jìn)行解碼,因?yàn)檫@ 種方式提交,編碼乂自動(dòng)使用的是tomcat缺省編碼格式iso-8859-lo但出現(xiàn)的亂 碼問題是:句號(hào),逗號(hào),等特殊符號(hào)變成了亂碼,漢字如果數(shù)量為奇數(shù),則會(huì)出現(xiàn)亂碼, 偶數(shù)則解析正常。解決方式:下載commons-f i 1 eup 1 oadl. 1. 1. jar這個(gè)版本的jar已經(jīng)解決了這些bug。但是取出內(nèi)容時(shí)仍然需
13、要對(duì)取出的字符進(jìn)行從iso8839-l到utf-8轉(zhuǎn)碼。已 經(jīng)能得到正常所有漢字以及字符。5、Java代碼關(guān)于url請(qǐng)求,接受參數(shù)的亂碼url的編碼格式,取決于上面所說的URIEncodin薩” UTF-8”。如果設(shè)定了這 個(gè)編碼格式,則意味著所有到url的漢字參數(shù),都必須進(jìn)行編碼才可以。否則得到的 漢字參數(shù)值都是亂碼,例如個(gè)鏈接 Response. sendDerect ( "/a. jsp?name=張大維”);而在 a. jsp 里面 直接使用String name = request. getParameter(name);得到的就是亂碼。因?yàn)橐?guī)定 了必須是utf-8才可以,
14、所以,這個(gè)轉(zhuǎn)向應(yīng)該這樣寫:Response. sendDerect ( "/d. jsp?name=URLEncode. encode ("張大 維”,” utf-8w );才可以。如果不設(shè)置這個(gè)參數(shù)URIEncoding二” UTF-8”,會(huì)怎么樣呢?不設(shè)置則就使用 了缺省的編碼格式iso8859-lo問題乂出來了,第一就是參數(shù)值的個(gè)數(shù)如果是奇數(shù) 個(gè)數(shù),則就可以正常解析,如果使偶數(shù)個(gè)數(shù),得到最后字符就是亂碼。還有就是如果 最后一個(gè)字符如果是英文,則就能正常解析,但中文的標(biāo)點(diǎn)符號(hào)仍出現(xiàn)亂碼。權(quán)宜之 計(jì),如果您的參數(shù)中沒有中文標(biāo)點(diǎn)符號(hào),則可以在參數(shù)值最后加一個(gè)英文符號(hào)來解決
15、亂碼問題,得到參數(shù)后再去掉這個(gè)最后面的符號(hào)。也可以湊或使用。6、腳本代碼關(guān)于url請(qǐng)求,接受到的參數(shù)亂碼腳本中也會(huì)進(jìn)行頁面轉(zhuǎn)向的控制,也會(huì)涉及到附帶參數(shù),并在接受頁面解析這 個(gè)參數(shù)的情況。如果這個(gè)漢字參數(shù)不進(jìn)行URIEncodin滬” UTF-8”所指定的編碼處 理,則接受頁面接受到的漢字也是亂碼。腳本處理編碼比較麻煩,必須有相應(yīng)的編碼 腳本對(duì)應(yīng)文件,然后調(diào)用腳本中的方法對(duì)漢字進(jìn)行編碼即可。7、關(guān)于jsp在MyEclipse中打開的亂碼問題對(duì)于一個(gè)已經(jīng)存在的項(xiàng)目,Jsp文件的存儲(chǔ)格式可能是utf-8o如果新安裝的 eclipse,則缺省打開使用的編碼格式都是iso8859-lo所以導(dǎo)致jsp里面的漢字
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 別墅建設(shè)合同范本
- 勞務(wù)合同補(bǔ)充合同范本
- 發(fā)光字安裝合同范本
- 南京期房購房合同范本
- 《野性的呼喚》讀書心得
- 單包工施工合同范例
- 買賣合同范本全文
- 小學(xué)生的英語試卷分析
- 充電寶代理合同范本
- 養(yǎng)殖 聯(lián)營 合同范本
- 2025年哈爾濱職業(yè)技術(shù)學(xué)院單招職業(yè)技能測試題庫完美版
- 《抗菌藥物合理運(yùn)用》課件
- 大學(xué)生創(chuàng)新創(chuàng)業(yè)基礎(chǔ)教程(高職“創(chuàng)新創(chuàng)業(yè)”課程)全套教學(xué)課件
- 中小學(xué)傳統(tǒng)文化教育指導(dǎo)標(biāo)準(zhǔn)
- 2023國家自然科學(xué)基金申請(qǐng)書
- 原始狩獵圖 (2)
- 《色彩構(gòu)成——色彩基礎(chǔ)知識(shí)》PPT課件
- 綠色建筑及材料分析及案列
- 鍍層的結(jié)合力
- 霍尼韋爾DDC編程軟件(CARE)簡介
- 實(shí)用中西醫(yī)結(jié)合診斷治療學(xué)
評(píng)論
0/150
提交評(píng)論