java中文亂碼問題詳解

java中文亂碼問題詳解

ID:42770147

大?。?63.00 KB

頁數(shù):15頁

時間:2019-09-21

java中文亂碼問題詳解_第1頁
java中文亂碼問題詳解_第2頁
java中文亂碼問題詳解_第3頁
java中文亂碼問題詳解_第4頁
java中文亂碼問題詳解_第5頁
資源描述:

《java中文亂碼問題詳解》由會員上傳分享,免費在線閱讀,更多相關內(nèi)容在工程資料-天天文庫。

1、java中文亂碼問題詳解Abstract:本文深入分析了Java程序設計中Java編譯器對java源文件和JVM對class類文件的編碼/解碼過程,通過此過程的解析透視出了Java編程中中文問題產(chǎn)生的根本原因,最后給出了建議的最優(yōu)化的解決Java中文問題的方法。?1.中文問題的來源???計算機最初的操作系統(tǒng)支持的編碼是單字節(jié)的字符編碼,于是,在計算機中一切處理程序最初都是以單字節(jié)編碼的英文為準進行處理。隨著計算機的發(fā)展,為了適應世界其它民族的語言(當然包括我們的漢字),人們提出了UNICODE編碼

2、,它采用雙字節(jié)編碼,兼容英文字符和其它民族的雙字節(jié)字符編碼,所以,目前,大多數(shù)國際性的軟件內(nèi)部均采用UNICODE編碼,在軟件運行時,它獲得本地支持系統(tǒng)(多數(shù)時間是操作系統(tǒng))默認支持的編碼格式,然后再將軟件內(nèi)部的UNICODE轉化為本地系統(tǒng)默認支持的格式顯示出來。Java的JDK和JVM即是如此,我這里說的JDK是指國際版的JDK,我們大多數(shù)程序員使用的是國際化的JDK版本,以下所有的JDK均指國際化的JDK版本。我們的漢字是雙字節(jié)編碼語言,為了能讓計算機處理中文,我們自己制定的gb2312、GB

3、K、GBK2K等標準以適應計算機處理的需求。所以,大部分的操作系統(tǒng)為了適應我們處理中文的需求,均定制有中文操作系統(tǒng),它們采用的是GBK,GB2312編碼格式以正確顯示我們的漢字。如:中文Win2K默認采用的是GBK編碼顯示,在中文WIN2k中保存文件時默認采用的保存文件的編碼格式也是GBK的,即,所有在中文WIN2K中保存的文件它的內(nèi)部編碼默認均采用GBK編碼,注意:GBK是在GB2312基礎上擴充來的。???由于Java語言內(nèi)部采用UNICODE編碼,所以在JAVA程序運行時,就存在著一個從UN

4、ICODE編碼和對應的操作系統(tǒng)及瀏覽器支持的編碼格式轉換輸入、輸出的問題,這個轉換過程有著一系列的步驟,如果其中任何一步出錯,則顯示出來的漢字就會出是亂碼,這就是我們常見的JAVA中文問題。???同時,Java是一個跨平臺的編程語言,也即我們編寫的程序不僅能在中文windows上運行,也能在中文Linux等系統(tǒng)上運行,同時也要求能在英文等系統(tǒng)上運行(我們經(jīng)??吹接腥税言谥形膚in2k上編寫的JAVA程序,移植到英文Linux上運行)。這種移植操作也會帶來中文問題。???還有,有人使用英文的操作系統(tǒng)

5、和英文的IE等瀏覽器,來運行帶中文字符的程序和瀏覽中文網(wǎng)頁,它們本身就不支持中文,也會帶來中文問題。???幾乎所有的瀏覽器默認在傳遞參數(shù)時都是以UTF-8編碼格式來傳遞,而不是按中文編碼傳遞,所以,傳遞中文參數(shù)時也會有問題,從而帶來亂碼現(xiàn)象。???總之,以上幾個方面是JAVA中的中文問題的主要來源,我們把以上原因造成的程序不能正確運行而產(chǎn)生的問題稱作:JAVA中文問題。1.JAVA編碼轉換的詳細過程???我們常見的JAVA程序包括以下類別:????*直接在console上運行的類(包括可視化界面的

6、類)????*JSP代碼類(注:JSP是Servlets類的變型)????*Servelets類????*EJB類????*其它不可以直接運行的支持類???這些類文件中,都有可能含有中文字符串,并且我們常用前三類JAVA程序和用戶直接交互,用于輸出和輸入字符,如:我們在JSP和Servlet中得到客戶端送來的字符,這些字符也包括中文字符。無論這些JAVA類的作用如何,這些JAVA程序的生命周期都是這樣的:???*編程人員在一定的操作系統(tǒng)上選擇一個合適的編輯軟件來實現(xiàn)源程序代碼并以.java擴展名保

7、存在操作系統(tǒng)中,例如我們在中文win2k中用記事本編輯一個java源程序;????*編程人員用JDK中的javac.exe來編譯這些源代碼,形成.class類(JSP文件是由容器調用JDK來編譯的);????*直接運行這些類或將這些類布署到WEB容器中去運行,并輸出結果。???那么,在這些過程中,JDK和JVM是如何將這些文件如何編碼和解碼并運行的呢?這里,我們以中文win2k操作系統(tǒng)為例說明JAVA類是如何來編碼和被解碼的。???第一步,我們在中文win2k中用編輯軟件如記事本編寫一個Java源

8、程序文件(包括以上五類JAVA程序),程序文件在保存時默認采用了操作系統(tǒng)默認支持GBK編碼格式(操作系統(tǒng)默認支持的格式為file.encoding格式)形成了一個.java文件,也即,java程序在被編譯前,我們的JAVA源程序文件是采用操作系統(tǒng)默認支持的file.encoding編碼格式保存的,java源程序中含有中文信息字符和英文程序代碼;要查看系統(tǒng)的file.encoding參數(shù),可以用以下代碼:  publicclassShowSystemDefaultEncoding{ 

當前文檔最多預覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當前文檔最多預覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學公式或PPT動畫的文件,查看預覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權歸屬用戶,天天文庫負責整理代發(fā)布。如果您對本文檔版權有爭議請及時聯(lián)系客服。
3. 下載前請仔細閱讀文檔內(nèi)容,確認文檔內(nèi)容符合您的需求后進行下載,若出現(xiàn)內(nèi)容與標題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。