




下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
問題一:在java中文件時應該采用什么編碼Java文件的方式總體可以分為兩類:按字節和按字符。按字節讀取就是采用InputStream.read()方法來字節,然后保存到一個byte[]數組藏了一個編碼的細節,newString(byte[]);會使用操作系統默認的字符集來解碼字節數組,中文操作系統就是GBK。而我們從輸入流里 是GBK編碼的,因為從輸入流里的字節編碼取決于被 并保存。此時demo.txt編碼是ANSI,中文操作系統下就是GBK。此時我們用輸入字節流該文件所得到的字節就是使用GBK方式編碼的字節那么我們最終newString(byte[]);時采用平臺默認的GBK來編碼成String也是沒有問題的(字節編碼和默認一致)。試想一下,如果在保存demo.txt文件時,我們選擇UTF-8編碼,那么該文件的編碼就不在是ANSI了,而變成了UTF-8。仍然采UTF-8編碼的字節。兩次的字節顯然不一樣,一個很明顯的區別就是:GBK每個漢字兩個字節,而UTF-8每個漢字三個字節。如何我們最后還使用new采用的默認GBK,而我們的字節是UTF-8字節。正確的辦法就是使用newOutputStreamoutnewFileOutputStream("d:\\demo.txt");demo.txtGBKGBK。如果UTF-8demo.txtUTF-8。這里還有一點,如果123abcasciigetBytes()getBytes(“UTF-8”)GBK這里可以總結一下,InputStreamOutputStream下面說說采用字符輸入流來文件,符。說起字符流,不得不提的就是InputStreamReader。以下是javaapi對它的說明:InputStreamReader是字節流通向字符流的橋梁:它使用指定的charset字節并將其為字符它使用的字符集可以由名稱指定或顯式給InputStreamReader在底層還是采用字節流來 ,方式,那么會采用操作系統默認的GBK來的字節。還用上面demo.txt的例子,假設demo.txt編碼方式為GBK,我們使用如下代碼來文件: in=newInputStreamReader(new編碼的,而InputStreamReader默認采用 也是GBK。如果把demo.txt編碼方式換成UTF-8,那么我們采用這種方式 in=newInputStreamReader(new給InputStreamReader指定編碼,這樣二者統一就不會出現亂碼了的。字符輸出流的主要類是:OutputStreamWriter。JavaapiOutputStreamWritercharsetGBKOutputStreamWriter:OutputStreamWriterout=newOutputStreamWriter(newUTF-8UTF-8javajavacjava通常我們手動建立一個java文件Demo.java,并保存。此時Demo.java文件的編碼為ANSI,中文操作系統下就是GBK.然后使用javac命令來編譯該源文件。”javacDemo.java”。Javac也需要java文件,那么javac是使用什 我們的字節呢?其實javac采用了操作系統默認的GBK編碼解 不會出現亂碼情況。讓我們來做點手腳,在保存Demo.java文件時,我們選擇UTF-8保存。此時Demo.java文件編碼就是UTF-8了。我們再使用”javacDemo.java”來編譯,如果Demo.java里含有中文字符,此時控制臺會出現警告信息,也出現了亂碼。究其原因,就是因為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編碼,所以能保證正確的的字節。不會出現亂碼。如果把pageEncoding設置為UTF-8,那么 文件過程中轉碼就出現了亂碼。上面說我常常不寫pageEncoding這個屬性,但是也沒出現過亂碼,這是怎么回事呢?那是因為如果沒有pageEncoding屬性,tomcat會采用contentType中charset編碼來jsp文件,我的jsp文件編碼通常設置為UTF-8,contentType的charset也設置為UTF-8,這樣tomcat使用UTF-8編碼來的jsp文件,二者編碼一致也不會出現亂碼。這只是contentType中charset的一個作用,它還有兩個作用,后面再說。可能有人會問:如果我既不設置pageEncoding屬性,也不設置contentType的charset屬性那么tomcat會采取什么編碼來 問題二和問題三分析的過程其實就是從源文件àclassunicodeGBKunicode,UTF-8unicode。因為只有采用正確的編碼來轉碼才能保證不出現亂碼。JvmjavaSysout.out.println比如:Sysout.out.println(“我們”)。經過正確的后”我們”是unicode保存在內存中的,但是在向標準輸出(控制臺)輸出時,jvmGBK)unicodeGBKGBK的,不會出現亂碼。在Eclipse中可以設置控制臺的字符編碼,具置在RunConfiguration框的Common里,我們可以試著設置為UTF-8,此時的輸出jspout.println()據<%@pagelanguage="java"contentType="text/html;charset=utf-8"contentTypetomcatHTMLTomcatunicodetomcatcontentTypecharsetHTTPhttpcontentTypecharsetcontentTypecharset1).在沒有pageEncoding屬性時,tomcat使用它來的jsp文件2).tomcat3).為了能更好的理解上面所說的和轉碼過程,我們舉一個例子inde
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030年能源設備產業行業市場現狀供需分析及投資評估規劃分析研究報告
- 2025-2030年納米多彩微晶石行業市場發展分析及前景趨勢與投資管理研究報告
- 2025-2030年石堿行業市場現狀供需分析及投資評估規劃分析研究報告
- 2025-2030年電車產業發展分析及行業市場現狀供需分析及投資評估規劃分析研究報告
- 2025-2030年電力安防產業市場發展分析及發展趨勢與投資研究報告
- 2025-2030年生物芯片實驗室行業市場發展分析及政策建議與策略研究報告
- 2025-2030年環保農藥行業市場現狀供需分析及投資評估規劃分析研究報告
- 2025-2030年牛奶產業行業市場現狀供需分析及投資評估規劃分析研究報告
- 2025-2030年港口投資產業深度調研及前景趨勢與投資研究報告
- 2025-2030年汽車發電機行業市場深度分析及前景趨勢與投資研究報告
- 《電磁感應原理解析》課件
- 成都輸液劑項目可行性研究報告參考范文
- 2025年二級注冊建筑師資格考試《建筑結構、建筑物理與設備》真題卷(附答案)
- 鋰電池基礎知識培訓課件
- 【部編版】六年級語文下冊《語文園地五》精美課件
- 登革熱防控知識培訓
- 2025年新能源汽車實訓基地建設方案范文
- 糖尿病患者血脂管理中國專家共識(2024版)解讀
- 藥物制劑輔助材料試題及答案
- 婚前心理知識講座課件
- 蛋雞育雛前后管理制度
評論
0/150
提交評論