張仁美
(貴州輕工職業(yè)技術(shù)學院 貴州省貴陽市 550025)
隨著互聯(lián)網(wǎng)技術(shù)的發(fā)展,為人類文明創(chuàng)新發(fā)展提供了推動力,人們之間的距離也明顯縮小,借助微信或MSN 等手機APP 社交軟件人們就可隨時隨地進行交流。當前,互聯(lián)網(wǎng)技術(shù)發(fā)展水平不斷提高并廣泛應用于日常生活與工作中,確保人們足不出戶就可知曉天下事。與此同時移動支付、網(wǎng)購等逐漸發(fā)展成為我國新四大發(fā)明,日常生活與工作更加便利?;ヂ?lián)網(wǎng)行業(yè)快速發(fā)展的同時,各行業(yè)應用網(wǎng)絡信息資源構(gòu)建信息安全機制保障網(wǎng)絡環(huán)境的安全與綠色性是十分必要的。在Web 開發(fā)中加強各類技術(shù)優(yōu)化,以此推動網(wǎng)絡信息可持續(xù)發(fā)展。
不同語言平臺中,為了確保Java Web 程序運行更加穩(wěn)定,統(tǒng)一采用Unicode 字符集表示其內(nèi)部語言。Web 開發(fā)中,其源程序要求先應用默認操作系統(tǒng)編碼方法轉(zhuǎn)碼操作,借助I/O 操作取得對應編碼字節(jié)流,最后在Class 文件中輸入轉(zhuǎn)換后的UTF-8 字符編碼。
文件操作如果屬于簡體中文格式,GBK 就成為默認編碼格式,開發(fā)工作中GBK 轉(zhuǎn)換成Unicode 的方法,最后在Class 文件中輸入最終UTF-8 字符編碼。要注意此過程中原系統(tǒng)不會發(fā)生亂碼問題,假若在英文系統(tǒng)中移入該編碼,就會加大中文亂碼問題的發(fā)生幾率,這主要是因Java 借助UTF-8 字符集讀取Class 文件內(nèi)容,并最終轉(zhuǎn)換為Unicode 編碼方式。實際轉(zhuǎn)換過程中,以Unicode 編碼為中介完成操作,此種情況下出現(xiàn)亂碼主要是因字符解碼字節(jié)流不正確或給出的字節(jié)流用所選字符集解碼存在偏差。
(1)ISO8859-1 編碼方式。通常也被看作是Latin-1 亦或是西歐語言,屬于單字節(jié)編碼方式的一種,其可表示的所有字符在0-255個,因而英文狀態(tài)編程下有很強的適用性。Java 網(wǎng)絡傳輸為標準字符集的形成創(chuàng)造了條件。其能夠兼容ASCII 編碼,表示256 個字符但對中文編碼卻是不支持的。
(2)GB2312/GBK 編碼。國家標準編碼內(nèi)容中,漢字信息交換法編碼是重要構(gòu)成,只可用于表示漢字。該編碼流程中,GBK編碼有效擴充了雙字節(jié)形式的編碼內(nèi)涵,對簡體與繁體字有明顯的兼容性,而GB2312 只能對簡體字進行表示,但GBK 卻對此種編碼形式有一定的兼容性。作為一種中文字符簡體中文雙字節(jié)編碼方式,涵蓋的漢字總量達到了6763 個。對于GB2312 編碼方式而言,GBK 屬于一種擴展模式,兼容性比較強。
(3)Unicode 編碼方式,其代表著全部語言字符,對編碼操作有明顯統(tǒng)一性。通過定長雙或者四字節(jié)方式進行編碼流程開發(fā),還要為每一字符設置唯一相對應的二進制編碼。對于ISO8859-1 編碼方法,該編碼形式是不兼容的,其它任何編碼也不能兼容。該編碼能夠?qū)崿F(xiàn)跨語言與平臺的文本轉(zhuǎn)換與處理要求,因而也稱為萬國碼。Unicode 編碼是在ASCII 字元集擴展基礎上產(chǎn)生中,其應用全16 位元字元集,可用于表示所有語言字符,利于統(tǒng)一進行編碼。
(4)UTF-8 編碼。該方式對 ISO8859-1 與Unicode 形式的編碼有一定的兼容性,還能對全部語言字符進行表示。定長編碼方法中該編碼不包含在內(nèi),每一字符為1-6 個長度不同的字符。另外,該編碼方法自身還能夠發(fā)揮校驗作用,一個字節(jié)就可表示一個英文字符,而漢字則至少需要3 個字節(jié)才能完全表示出來。
Java Web 開發(fā)中,字符編碼轉(zhuǎn)換是十分必要的。計算機設備只能對二進制數(shù)做出識別,日常程序開發(fā)中,會用到很多的字母、阿拉伯數(shù)字及漢字等,要注意通過二進制方法在電腦上存儲字符編碼。Web 開發(fā)中,計算機設備處理字符分為編碼與解碼,字符儲存到電腦上后轉(zhuǎn)換成二進制數(shù)位,此過程即為編碼;反之,如果電腦上二進制編碼是用字符形式顯現(xiàn)出來,這一過程即為解碼。實際開發(fā)過程中,ISO8859- 1,UTF-8,Unicode,GB2312 及GBK 等是常用編碼方式,要注意編碼方式的不同,其要合理選擇相應的編碼規(guī)則。
Eclipse 為核心的Web 開發(fā)設計過程中,為了盡可能預防中文亂碼問題的出現(xiàn),在jsp 頁面中做好默認編碼的設置。此時,為了保障中文顯示效果,大多數(shù)情況下會以UTF-8 設置Eclipse 編碼方式。實際工作中,可從以下幾方面入手進行。首先,在jsp 頁面中做好編碼設置,程序語言為window-preferences-General Content Type -Text -Jsp,利用UTF-8 編碼有效設置Default En Coding。其次,基于Eclipse 設置環(huán)境工作編碼。Window-preferences General -workspace面板中基于UTF-8編碼加強Text file encoding設置。最后,jsp 文件編碼的設置,電腦程序面板中以UTF-8 加強Encoding 編碼設置。
Jsp 頁面訪問時,網(wǎng)頁開發(fā)過程中中文亂碼是普遍存在的一種較為復雜的亂碼問題。編碼設置過程中,為了減小這一問題發(fā)生幾率,一般將字符集添加到jsp 文件頂部,再借助UTF-8 形式為頁面設置相應的編碼格式,其設置的具體代碼主要為:
另外,在服務器tomcat Web 文件配置Server.xml 中Connect 項中加入“URI Encoding=UTF-8”,再對tomcat 進行重新啟動服務。
瀏覽器會以get 與post 方式將信息傳遞給服務器,實際工作中要根據(jù)實際情況選用相應的方式解決亂碼問題。以get 方式提交信息時,基于“?參數(shù)名1=值1&參數(shù)名2=值2…”的方式將URL 及相關(guān)參數(shù)連接起來,選用ASCII 字符提交相關(guān)數(shù)據(jù)。提交表單時,瀏覽器選用ISO8859-1 編碼方式向URL 中非ASCII 設計URL 編碼傳遞相關(guān)的數(shù)據(jù),服務器接收到此類數(shù)據(jù)后實施編碼。因而,get 方式提交數(shù)據(jù)過程中出現(xiàn)亂碼問題后,業(yè)務層利用String類get Bytes 解碼手段接收信息參數(shù),而New String(request.get Parameter("name").get Bytes("ISO-8859-1"),"客戶編碼方法")是其編碼的具體語言形式。
在頁面查詢或者提交信息過程中,一旦URL 鏈接中有中文字符出現(xiàn),閱讀中文目錄與文件名時出現(xiàn)亂碼。這主要是因為應用URL 進行參數(shù)傳遞時,瀏覽器編碼環(huán)境直接決定著程序編碼,換言之UEL 中如果目錄或文件名是中文情況下,通過瀏覽器進行參數(shù)等編碼的設置,進而將這些編碼有效的傳遞到后臺之中。如果沒有經(jīng)過處理,就請求URL,如果URL 存在中文,就會引起中文亂碼問題。研究測試發(fā)現(xiàn),鏈接編碼與解碼是有效解決這一問題的辦法。其中編碼主要關(guān)鍵代碼是:
鏈接地址進行解碼是,主要代碼為:
java.net.URL Decoder.decode(request.get Request URI(),"UTF-8"
對于My SQL 數(shù)據(jù)庫而言,ISO8859-1 是編碼的默認格式,數(shù)據(jù)存取過程中為了預防中文亂碼問題,可利用UTF-8 修改MUSQL默認編碼格式并解決亂碼問題。日常工作中,主要通過安裝目錄中找到my.ini 文件方式進行。
將default-character-set=utf8引入到client、my sqld、my sql、my sql.server 及my sqld_safe 等項目下。此外,數(shù)據(jù)庫連接URL 中將“jdbc:my sql://local host:3306/db1?use Encode=true&character Encoding=UTF8”視為URL 連接字符串,關(guān)鍵代碼為character Encoding=utf8,表示以UTF-8 編碼字符集進行對象連接。
中文字符輸入Servlet 中時,假若瀏覽器頁面看到的內(nèi)容為很多個“?”,那么表明出現(xiàn)中文亂碼問題。實際工作中,此類亂碼問題是如何形成的。當我們采用response 對象輸出流編碼過程中,選用ISO-8859-1 字符編碼表,該字符表對中文不能支持,此時ISO-8859-1 字符編碼表中就無法查詢到與中文字符相對應的編碼。如果查不到就要這些中文字符統(tǒng)一編碼對應個數(shù)“63”。瀏覽器接收到該數(shù)據(jù)后實施解碼,解碼過程中選用默認支持中文字符編碼表GB2312。而在GB2312 字符編碼表中,“63”對應字符為“?”,實際操作中將“63”解碼成“?”,就會形成亂碼1。
Web日常開發(fā)工作中,對于中文輸出亂碼問題,可采取以下方法解決這一亂碼問題。一方面,采用HTTP Servlet Response 接口提供的 set Character Encoding()的方法合理設置字符編碼方法。眾所周知,UTF-8 字符集只支持中文,可利用代碼設置字符編碼方式形成UTF-8 字符編碼表。瀏覽器中,以UTF-8 設置其編碼形式,為中文輸出亂碼問題的解決創(chuàng)造條件。另一方面,編碼或解碼方式都借助HTTP Servlet Response 對象提供的方式設計。利用response.set Character Encoding(“UTF-8”)通過UTF-8 編碼字符表設置編碼方式;還要借助UTF-8 字符表設置瀏覽器解碼表,選用相同的編碼與解碼表條件下,就不會發(fā)生中文亂碼問題。這兩條語句功能還可利用 response.set Content Type(“text/HTML;char set=utf-8”)語言代碼實現(xiàn)。
綜上所述,軟件對計算機系統(tǒng)而言是非常重要的,要加強軟件系統(tǒng)測試、設計與后期維護等方面的設計,結(jié)合軟件系統(tǒng)要求構(gòu)建層次相同的模塊。隨著時代的進步,國家科學技術(shù)水平不斷提高,所以軟件開發(fā)過程也不斷優(yōu)化與完善。研究分析相關(guān)問題,以此深入解決軟件開發(fā)設計中出現(xiàn)的問題,為順利進行Web 開發(fā)奠定良好的基礎。