![專題1:Java亂碼解決方案_第1頁(yè)](http://file4.renrendoc.com/view/029b779c6923efe923394c93f86ca475/029b779c6923efe923394c93f86ca4751.gif)
![專題1:Java亂碼解決方案_第2頁(yè)](http://file4.renrendoc.com/view/029b779c6923efe923394c93f86ca475/029b779c6923efe923394c93f86ca4752.gif)
![專題1:Java亂碼解決方案_第3頁(yè)](http://file4.renrendoc.com/view/029b779c6923efe923394c93f86ca475/029b779c6923efe923394c93f86ca4753.gif)
![專題1:Java亂碼解決方案_第4頁(yè)](http://file4.renrendoc.com/view/029b779c6923efe923394c93f86ca475/029b779c6923efe923394c93f86ca4754.gif)
![專題1:Java亂碼解決方案_第5頁(yè)](http://file4.renrendoc.com/view/029b779c6923efe923394c93f86ca475/029b779c6923efe923394c93f86ca4755.gif)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
專題1:Java亂碼解決方案第一頁(yè),共23頁(yè)。亂碼的出處開(kāi)發(fā)者所用的操作系統(tǒng)jdk的名稱、版本數(shù)據(jù)庫(kù)的名稱、版本(精確版本)以及jdbc驅(qū)動(dòng)的版本出現(xiàn)亂碼的源代碼第二頁(yè),共23頁(yè)。字符集ASCII:是一個(gè)原始的字符集,而且是到目前為止最通用的,是所有字符集必須支持的最主要部分?;旧现欢x了書寫英語(yǔ)需要的全部字符,這些字符的編碼是0~127。Unicode字符集:是一個(gè)雙字節(jié)字符集,能表示多種文字和幾百種語(yǔ)言中的40,000多個(gè)不同字符。ISO字符集:國(guó)際標(biāo)準(zhǔn)組織(ISO)定義了幾個(gè)不同的字符集,是在ASCII碼基礎(chǔ)上增加了其他語(yǔ)言和地區(qū)需要的字符。其中最突出的是ISO8859-1(Latin-1),Latin-1包括了書寫所有西方歐洲語(yǔ)言不可缺少的附加字符,其中0~127的字符與ASCII碼相同。
UTF-8:是一個(gè)壓縮的Unicode版本,使用單個(gè)字節(jié)表示最常用的字符,即0到127的ASCII字符,較少見(jiàn)的字符使用三個(gè)字節(jié)表示,如漢字。GB2312:中國(guó)國(guó)家標(biāo)準(zhǔn)的簡(jiǎn)體中文字符集,所收錄的漢字已經(jīng)覆蓋99.75%的使用頻率,基本滿足了漢字的計(jì)算機(jī)處理需要,在中國(guó)大陸和新加坡獲廣泛使用。(GB18030,GBK,BIG5)第三頁(yè),共23頁(yè)。常用字符集字符集名稱語(yǔ)言/國(guó)家US-ASCII英語(yǔ)UTF-8壓縮UnicodeUTF-16壓縮UCSISO-10646-UCS-2原始UnicodeISO-10646-UCS-4原始UCSISO-8859-1Latin-1,西歐ISO-8859-2Latin-2,東歐ISO-8859-3Latin-3,南歐ISO-8859-4Latin-4,北歐ISO-8859-5ASCII碼加古斯拉夫語(yǔ)ISO-8859-6ASCII碼加阿拉伯語(yǔ)ISO-8859-7ASCII碼加希臘語(yǔ)ISO-8859-8ASCII碼加希伯來(lái)語(yǔ)第四頁(yè),共23頁(yè)。ISO-8859-9Latin-5,土耳其語(yǔ)ISO-8859-10Latin-6,ASCII碼加北歐語(yǔ)ISO-8859-11ASCII碼加泰國(guó)語(yǔ)ISO-8859-13Latin-7,ASCII碼加波羅地海周邊語(yǔ)言和獨(dú)特的拉托維亞語(yǔ)ISO-8859-14Latin-8,ASCII碼加蓋爾語(yǔ)和威爾式語(yǔ)ISO-8859-15Latin-9,Latin-0,西歐ISO-2022-JP日語(yǔ)Shift_JIS日文版WindowsEUC-JP日文版UnixBig5中國(guó)臺(tái)灣地區(qū),漢語(yǔ)GB2312中國(guó)大陸,漢語(yǔ)KOI6-R俄羅斯ISO-2022-KR韓語(yǔ)EUC-KR韓語(yǔ)版UnixISO-2022-CN漢語(yǔ)第五頁(yè),共23頁(yè)。主要工具使用的字符集(默認(rèn))操作系統(tǒng)(Windows):GB2312服務(wù)器(Tomcat):ISO-8859瀏覽器(IE):GB2312數(shù)據(jù)庫(kù)(Mysql):latin1(ISO-8859-1)開(kāi)發(fā)工具(Eclipse):latin1(ISO-8859-1)第六頁(yè),共23頁(yè)。編碼的窮舉法System.out.println(newString(testString.getBytes(”ISO-8859-1〃),”gb2312〃));System.out.println(newString(testString.getBytes(”UTF8〃),”gb2312〃));System.out.println(newString(testString.getBytes(”GB2312〃),”gb2312〃));System.out.println(newString(testString.getBytes(”GBK”),”gb2312〃));System.out.println(newString(testString.getBytes(”BIG5〃),”gb2312〃));
第七頁(yè),共23頁(yè)。<%@pagecontentType=〃text/html;charset=GB2312〃%>:jsp被編譯成為html的過(guò)程中提供編碼方式讓java來(lái)“讀取”表達(dá)式當(dāng)中的字符串。<metahttp-equiv=〃Content-Type〃content=〃text/html;charset=gb2312〃>:為IE瀏覽器提供編碼選擇,是用來(lái)”顯示”最后的數(shù)據(jù)。第八頁(yè),共23頁(yè)。1.編碼語(yǔ)句:
<%@pagelanguage=“java”pageEncoding=“UTF-8”%>
<%@pagecontentType=“text/html;charset=iso8859-1”%>
<html>
<head>
<title>中文問(wèn)題</title>
<metahttp-equiv=“Content-Type”content=“text/html;charset=UTF-8”>
</head>
</head>
<body>
看看是否出現(xiàn)了亂碼!
</body>
</html>
第九頁(yè),共23頁(yè)。分析:第一個(gè)地方的編碼格式為jsp文件的存儲(chǔ)格式。Eclipse等會(huì)根據(jù)這個(gè)編碼格式保存文件,并編譯jsp文件括里面的漢字。第二處編碼為解碼格式。因?yàn)榇鏋閁TF-8的文件被解碼為iso8859-1,這樣如有中文肯定出亂碼,也就是必須一致。而第二處所在的這一行,可以沒(méi)有。缺省也是使用iso8859-1的編碼格式。所以如果沒(méi)有這一行的話,“我是個(gè)好人”也會(huì)出現(xiàn)亂碼。必須一致才可以。第三處編碼為控制瀏覽器的解碼方式。如果前面的解碼都一致并且無(wú)誤的話,這個(gè)編碼格式?jīng)]有關(guān)系。有的網(wǎng)頁(yè)出現(xiàn)亂碼,就是因?yàn)闉g覽器不能確定使用哪種編碼格式。因?yàn)轫?yè)面有時(shí)候會(huì)嵌入頁(yè)面,導(dǎo)致瀏覽器混淆了編碼格式。出現(xiàn)了亂碼。第十頁(yè),共23頁(yè)。2.表單使用Post方式提交后接收到的亂碼問(wèn)題
這個(gè)亂碼也是tomcat的內(nèi)部編碼格式iso8859-1在搗亂,也就是說(shuō)post提交時(shí),如果沒(méi)有設(shè)置提交的編碼格式,則會(huì)以iso8859-1方式進(jìn)行提交,接受的jsp卻以u(píng)tf-8的方式接受,導(dǎo)致亂碼。第十一頁(yè),共23頁(yè)。解決方法AStringstr=newString(request.getParameter("something").getBytes("ISO-8859-1"),"utf-8")第十二頁(yè),共23頁(yè)。解決方法B在請(qǐng)求頁(yè)面上開(kāi)始處,執(zhí)行請(qǐng)求的編碼代碼:request.setCharacterEncoding("UTF-8")第十三頁(yè),共23頁(yè)。3.表單get提交方式的亂碼處理方式如果使用get方式提交中文,接受參數(shù)的頁(yè)面也會(huì)出現(xiàn)亂碼,這個(gè)亂碼的原因也是tomcat的內(nèi)部編碼格式iso8859-1導(dǎo)致。Tomcat會(huì)以get的缺省編碼方式iso8859-1對(duì)漢字進(jìn)行編碼,編碼后追加到url,導(dǎo)致接受頁(yè)面得到的參數(shù)為亂碼。第十四頁(yè),共23頁(yè)。解決方法A同上,對(duì)接收到的字符進(jìn)行解碼,再轉(zhuǎn)碼第十五頁(yè),共23頁(yè)。解決方法BGet走的是url提交,而在進(jìn)入url之前已經(jīng)進(jìn)行了iso8859-1的編碼處理。要想影響這個(gè)編碼則需要在
server.xml的Connector節(jié)點(diǎn)增加useBodyEncodingForURI="true"屬性配置,即可控制tomcat對(duì)get方式的漢字編碼方式,上面這個(gè)屬性控制get提交也是用request.setCharacterEncoding("UTF-8")所設(shè)置的編碼格式進(jìn)行編碼。所以自動(dòng)編碼為utf-8,接受頁(yè)面正常接受就可以了。
第十六頁(yè),共23頁(yè)。4.上傳文件時(shí)的亂碼解決上傳文件時(shí),form表單設(shè)置的都是enctype=“multipart/form-data”。這種方式以流方式提交文件。如果使用apach的上傳組件,會(huì)發(fā)現(xiàn)有很多亂碼想象。這是因?yàn)閍pach的先期commons-有bug,取出漢字后進(jìn)行解碼,因?yàn)檫@種方式提交,編碼又自動(dòng)使用的是tomcat缺省編碼格式iso-8859-1。出現(xiàn)的亂碼問(wèn)題是:句號(hào),逗號(hào)等特殊符號(hào)變成了亂碼,漢字如果數(shù)量為奇數(shù),則會(huì)出現(xiàn)亂碼,偶數(shù)則解析正常。第十七頁(yè),共23頁(yè)。解決方法下載commons-,這個(gè)版本的jar已經(jīng)解決了這些bug。
但是取出內(nèi)容時(shí)仍然需要對(duì)取出的字符進(jìn)行從iso8859-1到utf-8轉(zhuǎn)碼,就能得到正常的所有漢字以及字符。第十八頁(yè),共23頁(yè)。5.java關(guān)于url請(qǐng)求,接受參數(shù)的亂碼url的編碼格式,取決于上面所說(shuō)的URIEncoding=”UTF-8”。如果設(shè)定了這個(gè)編碼格式,則意味著所有到url的漢字參數(shù),都必須進(jìn)行編碼才可以,否則得到的漢字參數(shù)值都是亂碼,例如:
Response.sendDirect(“/a.jsp?name=張大維”);而在a.jsp里面直接使用Stringname;得到的就是亂碼。因?yàn)橐?guī)定了必須是utf-8才可以,所以,這個(gè)轉(zhuǎn)向應(yīng)該這樣寫:
Response.sendDerect(“/a.jsp?name=URLEncode.encode(“張大維”,”utf-8”)第十九頁(yè),共23頁(yè)。6.腳本代碼關(guān)于url請(qǐng)求,接受到的參數(shù)亂碼腳本中也會(huì)進(jìn)行頁(yè)面轉(zhuǎn)向的控制,也會(huì)涉及到附帶參數(shù),并在接受頁(yè)面解析這個(gè)參數(shù)的情況。如果這個(gè)漢字參數(shù)不進(jìn)行URIEncoding=”UTF-8”所指定的編碼處理,則接受頁(yè)面接受到的漢字也是亂碼。腳本處理編碼比較麻煩,必須有相應(yīng)的編碼腳本對(duì)應(yīng)文件,然后調(diào)用腳本中的方法對(duì)漢字進(jìn)行編碼即可。第二十頁(yè),共23頁(yè)。7.關(guān)于jsp在Eclipse等中打開(kāi)的亂碼問(wèn)題對(duì)于一個(gè)已經(jīng)存在的項(xiàng)目,Jsp文件的存儲(chǔ)格式可能是utf-8。如果新安裝的eclipse,則缺省打開(kāi)使用的編碼格式都是iso8859-1。所以導(dǎo)致jsp里面的漢字出現(xiàn)亂碼。這個(gè)亂碼比較容易解決,直接到eclipse3.1的偏好設(shè)置里面找到general->edidor,設(shè)置為您的文件打開(kāi)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 生態(tài)文明教育下的綠色辦公空間設(shè)計(jì)探討
- 現(xiàn)代企業(yè)經(jīng)濟(jì)責(zé)任審計(jì)的操作技巧與策略
- 2023九年級(jí)語(yǔ)文下冊(cè) 第三單元 寫作 布局謀篇說(shuō)課稿 新人教版
- 《認(rèn)識(shí)10》(說(shuō)課稿)-2024-2025學(xué)年一年級(jí)上冊(cè)數(shù)學(xué)蘇教版
- 未來(lái)城市中的綠色辦公樓發(fā)展趨勢(shì)探討
- 生物質(zhì)能源的產(chǎn)業(yè)鏈布局與商業(yè)模式探討
- 珠寶店品牌形象與店面設(shè)計(jì)的關(guān)聯(lián)性研究
- 現(xiàn)代辦公環(huán)境下的口腔健康管理與技術(shù)應(yīng)用研究
- 現(xiàn)代銀行的數(shù)字化轉(zhuǎn)型實(shí)踐-以網(wǎng)銀系統(tǒng)建設(shè)為例證
- 2024年 第七章 第2講 電場(chǎng)的能的性質(zhì)說(shuō)課稿 魯科版選修3-1
- 32軟件測(cè)試報(bào)告GJB438C模板
- 長(zhǎng)期處方管理規(guī)范
- 汽車電氣設(shè)備檢測(cè)與維修中職全套教學(xué)課件
- 幼兒園大班數(shù)學(xué)PPT課件2、3、4的分解與組成
- 遙感圖像的分析解譯(共34張PPT)
- API682機(jī)械密封沖洗方案(中文)課件
- 七年級(jí)上冊(cè)英語(yǔ)完形填空、閱讀理解綜合訓(xùn)練100題(含參考答案)
- DB35T 1345-2013蘭壽系列金魚養(yǎng)殖技術(shù)規(guī)范
- 祛痘產(chǎn)品原料配方與消費(fèi)者祛痘方案選擇建議
- 年產(chǎn)一萬(wàn)噸蓖麻項(xiàng)目可行性論證報(bào)告
- 儒林外史每回概括
評(píng)論
0/150
提交評(píng)論