999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

Java Web項目開發中的中文亂碼問題與對策

2020-05-21 05:54:57張彥芳
電腦知識與技術 2020年9期

張彥芳

摘要:在當下的網絡時代,Java Web技術發展迅速,已經成為市場上主流的web開發技術之一,為越來越多的web應用開發人員所使用。但是,在進行Java Web項目開發時,經常出現的中文亂碼問題給應用開發帶來了不少的麻煩。該文具體分析了Java Web項目開發中常見的中文亂碼問題,并給出了相應的對策。

關鍵詞:中文亂碼;編碼;解碼;Servlet

中圖分類號:TP311 文獻標識碼:A

文章編號:1009-3044(2020)09-0096-02

1 引言

目前,網絡高速發展,web開發應用非常廣泛,Java Web成為市場上非常流行的web開發技術之一,越來越多的人開始學習并使用Java web開發項目。但是,我們在使用Java web技術開發項目時不可避免用到中文,在Java web中使用中文經常會出現中文亂碼問題,嚴重影響了項目的開發與應用,解決中文亂碼問題迫不及待。本文具體分析了實際應用中遇到的中文亂碼問題,并給出了相應的對策。

2 產生中文亂碼的原因

計算機中存儲數據都是以二進制的形式存儲。當我們輸入中文字符時,需要把中文字符轉換成二進制進行存儲,這時就會發生字符和字節之間的轉換。將字符轉換成字節的過程,我們稱為編碼,將字節轉換成字符的過程稱為解碼。無論是編碼還是解碼,字符與字節之間的轉換都是通過查碼表來完成的,如果在解碼時采用的碼表和編碼時采用的碼表不一致,就會產生亂碼的問題。

3 Java Web中常見的中文亂碼問題與對策

3.1訪問JSP頁面時出現中文亂碼

通過瀏覽器訪問JSP頁面時,經常會在瀏覽器中看到亂碼,出現亂碼的根本原因是使用的編碼不支持中文。在JSP頁面中使用的編碼默認為“IS0-8859-1”,這種編碼方式不兼容中文字符。常用的支持中文字符的編碼有GB2312,GBK和UTF-8。我們可以在JSP文件的page指令中將編碼修改為支持中文的編碼即可。例如:< %@page pageEncoding=”UTF-8”%>.

這種方式,每次新建JSP文件時,都要在page指令中設置編碼,比較麻煩。如果使用的是Eclipse軟件開發java Web項目的話,可以直接修改JSP頁面的默認編碼為UTF-8。方法為:在Windows菜單下選擇preferences,在其級聯菜單下選擇Web,并在web的子菜單JSP Files中謾置Encoding為UTF-8,這樣設置后,再新建JSP文件,文件默認的編碼就變為UTF-8了。

3.2 中文輸出亂碼問題

在Servlet中輸人中文字符時,如果在瀏覽器頁面看到的內容是若干個“?”,就說明產生了中文亂碼。那么,這個亂碼是如何產生的呢?當我們使用response對象的輸出流進行編碼時,采用的是IS0-8859-1的字符碼表,這個字符表是不支持中文的,這時在IS0-8859-1字符碼表中就查不到中文字符對應的碼,當查不到的時候就會給這些中文字符統一編碼為對應個數的“63”。瀏覽器接收到數據后進行解碼,瀏覽器解碼時會采用默認的支持中文字符的字符碼表GB2312,在GB2312字符表中,“63”對應的字符是“?”,將“63”解碼為“?”,就產生了亂碼。具體分析過程見圖1。

解決這種輸出亂碼問題有兩種方法:一是可以使用HttpServletResponse接口提供的setCharacterEncoding0方法,設置字符的編碼方式。我們知道UTF-8字符集支持中文,我們通過代碼設置字符的編碼方式為字符碼表UTF-8,在瀏覽器中設置瀏覽器的編碼方式也為UTF-8,這樣就能解決這個中文亂碼問題。二是不管編碼還是解碼方式都使用HttpServletResponse對象提供的方法來設置。我們通過response.setCharactorEncod-ing(“UTF-8”);i置編碼使用UTF-8字符碼表。通過使用

response. setHeader(“Content-Type”,“text/html; charset=UTF-8”);設置瀏覽器使用UTF-8字符表進行解碼,編碼解碼使用的碼表一致了,就不會出現中文亂碼問題。這兩條語句的功能還可以通過一句代碼來實現,即response.setContentTypef“text/html;charset=utf-8”1:

3.3 請求參數的中文亂碼問題

在實際項目開發中,用戶的信息常常經由表單來提交,用戶在填寫表單時,不可避免地要填寫中文信息。當提交這些用戶信息時,瀏覽器會傳遞這些表單信息。而瀏覽器在傳遞請求參數時,采用的編碼是UTF-8,但是在解碼的時候使用的是默認的字符集IS0-8859-1,這樣就導致了亂碼問題的出現。為了避免中文亂碼的出現,可以通過HttpServletRequest接口提供的setCharacterEncoding0方法設置request對象的解碼方式為UTF-8,使解碼的字符集和編碼的字符集一致。

3.4 中文文件下載出現的中文亂碼問題

在web項目開發中,常常需要實現文件的上傳與下載功能,比如圖片的上傳與下載、郵箱中附件的上傳與下載等。在下載文件時,文件的名字如果是中文的,就需要在程序中對中文亂碼進行處理。如果不處理,通過瀏覽器下載文件時,要下載的文件名稱就顯示不出來。Servlet API中定義了一個URLEncoder類。我們通過這個類中定義的encoding0方法,可以將文件路徑中的字符串以指定的編碼進行輸出。經過URL編碼后,HTTP消息頭中的數據轉換成通用的符號,在下載文件時就不會出現亂碼問題了。

4 使用過濾器對全站實現統一編碼,解決中文亂碼問題

在以上所述的解決中文亂碼問題的方法中,大部分都是在Servlet中設置編碼方式,這種方式也是很有效的。但是,在實際web開發中,會出現很多Servlet,每個Servlet中都進行編碼的設置,會重復書寫大量的代碼,給開發工作帶來麻煩。為了解決這個問題,我們可以在過濾器中對獲取到的請求和響應消息進行編碼,將全網站使用的編碼統一,從而解決中文亂碼問題。使用過濾器可以極大地提高控制效果,同時也降低了開發成本,提高了工作效率。使用過濾器處理中文亂碼時,根據請求方式的不同,處理亂碼的方式也不同。

4.1 POST方式

用戶請求時,如果采用的請求方式是POST,那么請求參數會存放在消息體中,可以使用setCharactorEncoding0進行編碼設置,這個方法只對消息體有效。

4.2 GET方式

如果用戶請求使用的方式是GET,這種請求方式,請求參數是存放在消息頭中的,不能直接使用setCharactorEncoding0進行編碼設置。需要通過獲取URI參數進行設置。但是每次遇到GET請求方式時,都需要單獨進行處理,會很麻煩。為此,可以先定義一個HttpServletRequestWrapper類的子類,在子類中對getParameter0方法重寫,從而獲取請求參數,再對請求參數進行編碼設置,從而解決中文亂碼問題。

public String getParameter(String name){

Stringstr= super.getParameter(name);

if (str== nuID

return null;

String method= super.getMethod0;

if(”get”.equals(method》{

try{

str= new String(str.getBytes(”iso-8859-1”),”utf-8”);

) catch (Exception e){

throw new RuntimeException(e);

Retum str;

5 結束語

Java Web技術是在計算機領域發展人員的必備利器之一,在使用Java Web技術開發項目時,開發人員會遇到各種各樣的中文亂碼問題,通過對具體問題的具體分析,找到切實有效的方法去解決,才能保障項目開發能夠順利完成。

參考文獻:

[1]劉長生,謝強,丁秋林.Java應用中的漢字亂碼問題分析[J].計算機技術與發展,2006,16(1):158-161.

[2]王衛,李天琦,湯偉,等.基于JSP技術項目開發中中文亂碼問題研究[Jl.電腦編程技巧與維護,2018(8):38-39,61.

[3]任平紅,陳矗,鄭秋梅.Java中文亂碼問題研究[J].計算機技術與發展,2013,23(3):117-120.

[4]劉冰.Java編程中中文問題的產生及其解決方案[Jl.現代計算機:專業版,2010(3):105-107,116.

[5]賈曉芳,沈澤剛.Java Web應用開發中的常見亂碼形式及解決方法[Jl.軟件導刊,2017,16(4):214-216.

【通聯編輯:代影】

主站蜘蛛池模板: 国产成人禁片在线观看| 中文字幕日韩欧美| 欧美精品1区2区| 国产久操视频| 亚洲精品卡2卡3卡4卡5卡区| 黄色在线不卡| 久久免费视频6| 99re热精品视频国产免费| 91免费精品国偷自产在线在线| 97视频免费看| 免费毛片在线| 色欲不卡无码一区二区| 最新国产你懂的在线网址| 久久亚洲高清国产| 免费99精品国产自在现线| 精品国产黑色丝袜高跟鞋| 亚洲精品国产首次亮相| 日韩免费中文字幕| 性色一区| 国产sm重味一区二区三区| 国产男女免费完整版视频| 女人18毛片久久| 久无码久无码av无码| 91人妻日韩人妻无码专区精品| 91啦中文字幕| 国产国语一级毛片| 999在线免费视频| 欧美精品一区在线看| 丝袜无码一区二区三区| 蜜桃视频一区二区三区| 精品第一国产综合精品Aⅴ| 欧美成人精品在线| 成人福利在线视频| 国产尹人香蕉综合在线电影| 亚洲日本www| 精品91在线| 日本成人精品视频| 日韩AV手机在线观看蜜芽| 中文字幕一区二区视频| 97在线视频免费观看| 国产99热| 国产成人精品无码一区二| 久久久久中文字幕精品视频| 国产午夜福利亚洲第一| 高清色本在线www| 成人午夜视频在线| 国内视频精品| 毛片手机在线看| 国产久草视频| 国产精品私拍在线爆乳| 伊人久久大香线蕉影院| 制服丝袜国产精品| 黄色三级网站免费| 青青青国产精品国产精品美女| 日本国产一区在线观看| 一级全免费视频播放| 美女无遮挡免费视频网站| 首页亚洲国产丝袜长腿综合| 国产精品手机在线观看你懂的| 91成人在线免费观看| 精品国产三级在线观看| 婷婷亚洲最大| 91在线中文| 精品五夜婷香蕉国产线看观看| 免费无码AV片在线观看中文| 国产精品夜夜嗨视频免费视频 | 亚洲精品视频网| 一级福利视频| 亚洲色图狠狠干| 色成人综合| 日韩欧美综合在线制服| 香蕉国产精品视频| 国产香蕉一区二区在线网站| 国产精品任我爽爆在线播放6080| 国产综合日韩另类一区二区| 狠狠v日韩v欧美v| 国产欧美专区在线观看| 天堂成人av| 国产成人高清在线精品| 漂亮人妻被中出中文字幕久久| 免费一看一级毛片| 国产美女无遮挡免费视频|