下載本文檔
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、java 編碼轉(zhuǎn)換過(guò)程java 編碼轉(zhuǎn)換過(guò)程前三篇博客側(cè)重介紹字符、編碼問(wèn)題,通過(guò)這三篇博客各位博友對(duì)各種字符編碼有 了個(gè)初步的了解,要了解 java 的中問(wèn)題這是必須要了解的。但是了解這些僅僅只 是個(gè)開(kāi)始,以下博客將側(cè)重介紹 java 亂碼是如何產(chǎn)的、存在哪些亂碼的情況、該 如何從根本上解決亂碼問(wèn)題。各位隨博主起征服令厭煩的 java 亂碼問(wèn)題吧!java 編碼轉(zhuǎn)換過(guò)程我們總是個(gè) java 類件和戶進(jìn)最直接的交互(輸、輸出,這些交互內(nèi)容 包含的字可能會(huì)包含中。論這些 java 類是與數(shù)據(jù)庫(kù)交互,還是與前端頁(yè)交 互,他們的命周期總是這樣的:1、程序員在操作系統(tǒng)上通過(guò)編輯器編寫程序代碼并且以 .
2、java 的格式保存操作系統(tǒng) 中,這些件我們稱之為源件。2、通過(guò) JDK 中的 javac.exe 編譯這些源件形成 .class 類。3、直接運(yùn)這些類或者部署在 WEB 容器中運(yùn),得到輸出結(jié)果。這些過(guò)程是從宏觀上來(lái)觀察的,了解這個(gè)肯定是不的,我們需要真正來(lái)了解 java 是如何來(lái)編碼和被解碼的:第步:當(dāng)我們編輯器編寫 java 源件,程序件在保存時(shí)會(huì)采操作系統(tǒng)默認(rèn)的 編碼格式(般我們中的操作系統(tǒng)采的是 GBK 編碼格式形成個(gè) .java 件。 java 源件是采操作系統(tǒng)默認(rèn)持的 file.encoding 編碼格式保存的。下代碼可以查 看系統(tǒng)的 file.encoding 參數(shù)值。Syste
3、m .out.println (System.getProperty (file.encoding ;第步:當(dāng)我們使 javac.exe 編譯我們的 java 件時(shí), JDK 先會(huì)確認(rèn)它的編譯參數(shù) encoding 來(lái)確定源代碼字符集,如果我們不指定該編譯參數(shù), JDK 先會(huì)獲取操作系 統(tǒng)默認(rèn)的 file.encoding 參數(shù),然后 JDK 就會(huì)把我們編寫的 java 源程序從 file.encoding 編碼 格式轉(zhuǎn)化為 JAVA 內(nèi)部默認(rèn)的 UNICODE 格式放內(nèi)存中。第三步:JDK 將上編譯好的且保存在內(nèi)存中信息寫 class 件中,形成 .class 件。 此時(shí) .class 件是
4、 Unicode 編碼的,也就是說(shuō)我們常見(jiàn)的 .class 件中的內(nèi)容論是中 字符還是英字符,他們都已經(jīng)轉(zhuǎn)換為 Unicode 編碼格式了。在這步中對(duì)對(duì) JSP 源件的處理式有點(diǎn)不同:WEB 容器調(diào) JSP 編譯器, JSP 編 譯器先會(huì)查看 JSP 件是否設(shè)置了件編碼格式,如果沒(méi)有設(shè)置則 JSP 編譯器會(huì)調(diào) 調(diào) JDK 采默認(rèn)的編碼式將 JSP 件轉(zhuǎn)化為臨時(shí)的 servlet 類,然后再編譯為 .class 件并保持到臨時(shí)件夾中。第四步:運(yùn)編譯的類:在這會(huì)存在下種情況1、直接在 console 上運(yùn)。2、 JSP/Servlet類。3、 java 類與數(shù)據(jù)庫(kù)之間。這三種情況每種情況的式都會(huì)不
5、同,1.Console 上運(yùn)的類這種情況下, JVM 先會(huì)把保存在操作系統(tǒng)中的 class 件讀到內(nèi)存中,這個(gè)時(shí)候內(nèi) 存中 class 件編碼格式為 Unicode ,然后 JVM 運(yùn)它。如果需要戶輸信息,則會(huì)采 file.encoding 編碼格式對(duì)戶輸?shù)男畔⑦M(jìn)編碼同時(shí)轉(zhuǎn)換為 Unicode 編碼格式保存 到內(nèi)存中。程序運(yùn)后,將產(chǎn)的結(jié)果再轉(zhuǎn)化為 file.encoding 格式返回給操作系統(tǒng)并輸 出到界去。整個(gè)流程如下:在上整個(gè)流程中,凡是涉及的編碼轉(zhuǎn)換都不能出現(xiàn)錯(cuò)誤,否則將會(huì)產(chǎn)亂碼。 2.Servlet 類由于 JSP 件最終也會(huì)轉(zhuǎn)換為 servlet 件(只不過(guò)存儲(chǔ)的位置不同已,所以這我
6、 們也將 JSP 件納其中。當(dāng)戶請(qǐng)求 Servlet 時(shí), WEB 容器會(huì)調(diào)它的 JVM 來(lái)運(yùn) Servlet 。先 JVM 會(huì)把 servlet 的 class 加載到內(nèi)存中去,內(nèi)存中的 servlet 代碼是 Unicode 編碼格式的。然后 JVM 在內(nèi)存 中運(yùn)該 Servlet ,在運(yùn)過(guò)程中如果需要接受從客戶端傳遞過(guò)來(lái)的數(shù)據(jù)(如表單和 URL 傳遞的數(shù)據(jù),則 WEB 容器會(huì)接受傳的數(shù)據(jù),在接收過(guò)程中如果程序設(shè)定了傳 參數(shù)的的編碼則采設(shè)定的編碼格式,如果沒(méi)有設(shè)置則采默認(rèn)的 ISO-8859-1編碼 格式,接收的數(shù)據(jù)后 JVM 會(huì)將這些數(shù)據(jù)進(jìn)編碼格式轉(zhuǎn)換為 Unicode 并且存到內(nèi)存 中。運(yùn) Servlet 后產(chǎn)輸出結(jié)果,同時(shí)這些輸出結(jié)果的編碼格式仍然為 Unicode 。緊接 著 WEB 容器會(huì)將產(chǎn)的 Unicode 編碼格式的字符串直接發(fā)送置客戶端,如果程序指定 了輸出時(shí)的編碼格式,則按照指定的編碼格式輸出到瀏覽器,否則采默認(rèn)的 ISO-8859-1編碼格式。整個(gè)過(guò)程流程圖如下: 3. 數(shù)據(jù)庫(kù)部分我們知道 java 程序與數(shù)據(jù)庫(kù)的連接都是通過(guò) JDBC 驅(qū)動(dòng)程序來(lái)連接的, JDBC 驅(qū)動(dòng)程 序默認(rèn)的是 ISO-8859-1編碼格式的,也就是說(shuō)我們通過(guò) java 程序向數(shù)據(jù)庫(kù)傳遞數(shù)據(jù) 時(shí), JDBC 先會(huì)將 Unicode
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度環(huán)保型倉(cāng)庫(kù)出租合同4篇
- 二零二四年信用借款逾期利率調(diào)整合同3篇
- 2025年度互聯(lián)網(wǎng)金融平臺(tái)數(shù)據(jù)安全保護(hù)合同4篇
- 2025年度個(gè)人債務(wù)擔(dān)保合同范本與風(fēng)險(xiǎn)控制策略
- 二零二四年度園林綠化養(yǎng)護(hù)私人承包合同范本3篇
- 2025版存量房買賣合同(含智能家居娛樂(lè)系統(tǒng)定制)3篇
- 2025版供應(yīng)鏈金融合同-利率定價(jià)與利息收益分配4篇
- 二零二五年度白灰產(chǎn)品綠色包裝設(shè)計(jì)合同范本2篇
- 2025年度存量房屋承購(gòu)經(jīng)紀(jì)服務(wù)合同綠色環(huán)保指標(biāo)要求3篇
- 2025年度新型滅蟑螂技術(shù)實(shí)施合同4篇
- 中醫(yī)診療方案腎病科
- 人教版(2025新版)七年級(jí)下冊(cè)數(shù)學(xué)第七章 相交線與平行線 單元測(cè)試卷(含答案)
- 完整2024年開(kāi)工第一課課件
- 從跨文化交際的角度解析中西方酒文化(合集5篇)xiexiebang.com
- 中藥飲片培訓(xùn)課件
- 醫(yī)院護(hù)理培訓(xùn)課件:《早產(chǎn)兒姿勢(shì)管理與擺位》
- 《論文的寫作技巧》課件
- 空氣自動(dòng)站儀器運(yùn)營(yíng)維護(hù)項(xiàng)目操作說(shuō)明以及簡(jiǎn)單故障處理
- 2022年12月Python-一級(jí)等級(jí)考試真題(附答案-解析)
- T-CHSA 020-2023 上頜骨缺損手術(shù)功能修復(fù)重建的專家共識(shí)
- Hypermesh lsdyna轉(zhuǎn)動(dòng)副連接課件完整版
評(píng)論
0/150
提交評(píng)論