下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
問題一:在java中文件時應(yīng)該采用什么編碼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)存中的,但是在向標(biāo)準(zhǔn)輸出(控制臺)輸出時,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)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 定積分與微積分基本定理(理)課件
- 2024年手機回收再利用處理合同3篇
- 2024年版?zhèn)€人汽車托掛管理協(xié)議版B版
- 2024雙方共建智慧城市合作協(xié)議書3篇
- 2025專業(yè)版上海市勞動合同范本
- 2024年數(shù)據(jù)中心冷卻系統(tǒng)改造項目信托貸款合同3篇
- 《礦井扇風(fēng)機》課件
- 2025勞務(wù)合同與承攬合同的比較
- 2024年某環(huán)保公司與某城市關(guān)于廢棄物處理與資源回收合同
- 百貨業(yè)態(tài)的營銷管理目錄課件
- 《基于Halbach分布的初級永磁直線電機的電磁設(shè)計與分析》
- 光伏發(fā)電項目管理述職報告
- 2024年辦公室檔案管理工作總結(jié)模版(3篇)
- 2024-2025學(xué)年高一【數(shù)學(xué)(人教A版)】數(shù)學(xué)建?;顒?1)-教學(xué)設(shè)計
- 2025年小學(xué)五年級數(shù)學(xué)(北京版)-分數(shù)的意義(三)-3學(xué)習(xí)任務(wù)單
- 生物人教版(2024版)生物七年級上冊復(fù)習(xí)材料
- 中華人民共和國野生動物保護法
- 數(shù)字化轉(zhuǎn)型成熟度模型與評估(DTMM)國家標(biāo)準(zhǔn)解讀 2024
- 河南省名校八校聯(lián)考2024-2025學(xué)年高二上學(xué)期期中模擬考試語文試題(含答案解析)
- 第五單元觀察物體(一) (單元測試)-2024-2025學(xué)年二年級上冊數(shù)學(xué) 人教版
- 【初中生物】脊椎動物(魚)課件-2024-2025學(xué)年人教版(2024)生物七年級上冊
評論
0/150
提交評論