![筆記心得編碼和解碼_第1頁](http://file4.renrendoc.com/view/4967c4eb4611c5c266879aa47bd98879/4967c4eb4611c5c266879aa47bd988791.gif)
![筆記心得編碼和解碼_第2頁](http://file4.renrendoc.com/view/4967c4eb4611c5c266879aa47bd98879/4967c4eb4611c5c266879aa47bd988792.gif)
![筆記心得編碼和解碼_第3頁](http://file4.renrendoc.com/view/4967c4eb4611c5c266879aa47bd98879/4967c4eb4611c5c266879aa47bd988793.gif)
![筆記心得編碼和解碼_第4頁](http://file4.renrendoc.com/view/4967c4eb4611c5c266879aa47bd98879/4967c4eb4611c5c266879aa47bd988794.gif)
![筆記心得編碼和解碼_第5頁](http://file4.renrendoc.com/view/4967c4eb4611c5c266879aa47bd98879/4967c4eb4611c5c266879aa47bd988795.gif)
下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
問題一:在java中文件時應該采用什么編碼Java文件的方式總體可以分為兩類:按字節(jié)和按字符。按字節(jié)讀取就是采用InputStream.read()方法來字節(jié),然后保存到一個byte[]數(shù)組藏了一個編碼的細節(jié),newString(byte[]);會使用操作系統(tǒng)默認的字符集來解碼字節(jié)數(shù)組,中文操作系統(tǒng)就是GBK。而我們從輸入流里 是GBK編碼的,因為從輸入流里的字節(jié)編碼取決于被 并保存。此時demo.txt編碼是ANSI,中文操作系統(tǒng)下就是GBK。此時我們用輸入字節(jié)流該文件所得到的字節(jié)就是使用GBK方式編碼的字節(jié)那么我們最終newString(byte[]);時采用平臺默認的GBK來編碼成String也是沒有問題的(字節(jié)編碼和默認一致)。試想一下,如果在保存demo.txt文件時,我們選擇UTF-8編碼,那么該文件的編碼就不在是ANSI了,而變成了UTF-8。仍然采UTF-8編碼的字節(jié)。兩次的字節(jié)顯然不一樣,一個很明顯的區(qū)別就是:GBK每個漢字兩個字節(jié),而UTF-8每個漢字三個字節(jié)。如何我們最后還使用new采用的默認GBK,而我們的字節(jié)是UTF-8字節(jié)。正確的辦法就是使用newOutputStreamoutnewFileOutputStream("d:\\demo.txt");demo.txtGBKGBK。如果UTF-8demo.txtUTF-8。這里還有一點,如果123abcasciigetBytes()getBytes(“UTF-8”)GBK這里可以總結(jié)一下,InputStreamOutputStream下面說說采用字符輸入流來文件,符。說起字符流,不得不提的就是InputStreamReader。以下是javaapi對它的說明:InputStreamReader是字節(jié)流通向字符流的橋梁:它使用指定的charset字節(jié)并將其為字符它使用的字符集可以由名稱指定或顯式給InputStreamReader在底層還是采用字節(jié)流來 ,方式,那么會采用操作系統(tǒng)默認的GBK來的字節(jié)。還用上面demo.txt的例子,假設(shè)demo.txt編碼方式為GBK,我們使用如下代碼來文件: in=newInputStreamReader(new編碼的,而InputStreamReader默認采用 也是GBK。如果把demo.txt編碼方式換成UTF-8,那么我們采用這種方式 in=newInputStreamReader(new給InputStreamReader指定編碼,這樣二者統(tǒng)一就不會出現(xiàn)亂碼了的。字符輸出流的主要類是:OutputStreamWriter。JavaapiOutputStreamWritercharsetGBKOutputStreamWriter:OutputStreamWriterout=newOutputStreamWriter(newUTF-8UTF-8javajavacjava通常我們手動建立一個java文件Demo.java,并保存。此時Demo.java文件的編碼為ANSI,中文操作系統(tǒng)下就是GBK.然后使用javac命令來編譯該源文件?!眏avacDemo.java”。Javac也需要java文件,那么javac是使用什 我們的字節(jié)呢?其實javac采用了操作系統(tǒng)默認的GBK編碼解 不會出現(xiàn)亂碼情況。讓我們來做點手腳,在保存Demo.java文件時,我們選擇UTF-8保存。此時Demo.java文件編碼就是UTF-8了。我們再使用”javacDemo.java”來編譯,如果Demo.java里含有中文字符,此時控制臺會出現(xiàn)警告信息,也出現(xiàn)了亂碼。究其原因,就是因為javac采用了GBK編碼我們定我們的編碼。如下:javac-encodingUTF-8Demo.javaEclipsejavaIDEAntjavaAnt也是我常用的編譯java文件的工具。首先,必須知道Ant在其javacjava1AntAntUTF-8javaencoding”UTF-8java<javacdestdir="${classes}"target="1.4"source="1.4"deprecation="off"debug="on"debuglevel="lines,vars,source"optimize="off"encoding="UTF-8">問題三:tomcatjspjsp<%@pagelanguage="java"contentType="text/html;charset=utf-8"pageEncoding亂碼情況。其實這個屬性就是告訴tomcat采用什么編碼來jsp文件的。它jspjsp是GBK編碼的,tomcat文件時采用也是GBK編碼,所以能保證正確的的字節(jié)。不會出現(xiàn)亂碼。如果把pageEncoding設(shè)置為UTF-8,那么 文件過程中轉(zhuǎn)碼就出現(xiàn)了亂碼。上面說我常常不寫pageEncoding這個屬性,但是也沒出現(xiàn)過亂碼,這是怎么回事呢?那是因為如果沒有pageEncoding屬性,tomcat會采用contentType中charset編碼來jsp文件,我的jsp文件編碼通常設(shè)置為UTF-8,contentType的charset也設(shè)置為UTF-8,這樣tomcat使用UTF-8編碼來的jsp文件,二者編碼一致也不會出現(xiàn)亂碼。這只是contentType中charset的一個作用,它還有兩個作用,后面再說??赡苡腥藭枺喝绻壹炔辉O(shè)置pageEncoding屬性,也不設(shè)置contentType的charset屬性那么tomcat會采取什么編碼來 問題二和問題三分析的過程其實就是從源文件àclassunicodeGBKunicode,UTF-8unicode。因為只有采用正確的編碼來轉(zhuǎn)碼才能保證不出現(xiàn)亂碼。JvmjavaSysout.out.println比如:Sysout.out.println(“我們”)。經(jīng)過正確的后”我們”是unicode保存在內(nèi)存中的,但是在向標準輸出(控制臺)輸出時,jvmGBK)unicodeGBKGBK的,不會出現(xiàn)亂碼。在Eclipse中可以設(shè)置控制臺的字符編碼,具置在RunConfiguration框的Common里,我們可以試著設(shè)置為UTF-8,此時的輸出jspout.println()據(jù)<%@pagelanguage="java"contentType="text/html;charset=utf-8"contentTypetomcatHTMLTomcatunicodetomcatcontentTypecharsetHTTPhttpcontentTypecharsetcontentTypecharset1).在沒有pageEncoding屬性時,tomcat使用它來的jsp文件2).tomcat3).為了能更好的理解上面所說的和轉(zhuǎn)碼過程,我們舉一個例子inde
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 小學三年級數(shù)學五千以內(nèi)加減法自我檢測試題大全附答案
- 大學班干申請書
- 接口之間的依賴關(guān)系分析
- DB2201-T 50-2023 稻田養(yǎng)殖鮑魚技術(shù)規(guī)范
- 二級建造師之二建建設(shè)工程法規(guī)及相關(guān)知識題庫【鞏固】 (一)
- 如何寫休學申請書
- 一建《建設(shè)工程項目管理》試題庫資料練習含【答案】卷19
- 一建《建設(shè)工程項目管理》試題庫資料練習含【答案】卷16
- 住校生貧困補助申請書
- 知識產(chǎn)權(quán)轉(zhuǎn)讓的市場分析與價值預測
- 人教版數(shù)學八年級下冊 第16章 二次根式 單元測試(含答案)
- 甘肅省民航機場集團招聘筆試沖刺題2025
- 心理學基礎(chǔ)知識考試參考題庫500題(含答案)
- 北師大版小學三年級數(shù)學下冊全冊教案
- DCMM練習題練習試題
- 《工業(yè)化建筑施工階段碳排放計算標準》
- 四級人工智能訓練師(中級)職業(yè)技能等級認定考試題及答案
- GB/T 33761-2024綠色產(chǎn)品評價通則
- 地下停車場充電樁技術(shù)方案建議書
- 幼兒園設(shè)施設(shè)備安全教育
- 廢舊保溫棉處置合同范例
評論
0/150
提交評論