• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      解決JSP/Servlet開發(fā)中的中文亂碼問題

      2011-09-23 03:43:26
      科技傳播 2011年1期
      關(guān)鍵詞:字符集亂碼表單

      肖 英

      1.武漢軟件工程職業(yè)學(xué)院,湖北武漢 430205 2.武漢市廣播電視大學(xué),湖北武漢 430033

      解決JSP/Servlet開發(fā)中的中文亂碼問題

      肖 英1,2

      1.武漢軟件工程職業(yè)學(xué)院,湖北武漢 430205 2.武漢市廣播電視大學(xué),湖北武漢 430033

      基于JSP/Servlet技術(shù)的Java Web應(yīng)用開發(fā)中,中文亂碼是個(gè)惱人的問題,給開發(fā)者帶來不小的麻煩,本文就著重討論了JSP/Servlet開發(fā)中幾種典型的中文亂碼問題,并給出了相應(yīng)的解決方案。

      JSP/Servlet;中文亂碼

      0 引言

      基于JSP/Servlet技術(shù)的Java Web應(yīng)用開發(fā)中,中文亂碼是個(gè)如影隨形的問題,總是揮之不去,對(duì)于Java Web應(yīng)用開發(fā)的初學(xué)者造成不少的困擾。Java Web應(yīng)用是由多種Web組件協(xié)同合作的,同時(shí)還需要瀏覽器和數(shù)據(jù)庫(kù)的支持,中文亂碼問題產(chǎn)生的根源就在于這些Web組件之間、或web組件與瀏覽器、與數(shù)據(jù)庫(kù)所使用的字符集標(biāo)準(zhǔn)不統(tǒng)一。因此,要解決中文亂碼,其基本原則就是:保持?jǐn)?shù)據(jù)傳輸?shù)钠瘘c(diǎn)、終點(diǎn)、傳輸通道上的編碼一致。

      1 幾種典型亂碼情形解決方案

      下面分幾種常見的情形給出中文亂碼的解決方案,這些解決方案統(tǒng)一使用UTF-8作為編碼字符集。

      1.1 瀏覽器顯示中文時(shí)的亂碼

      瀏覽器在顯示JSP頁(yè)面時(shí),若頁(yè)面含中文內(nèi)容,可能會(huì)出現(xiàn)中文亂碼,其原因是:JSP頁(yè)面與瀏覽器的字符集不匹配。

      解決方案:讓JSP頁(yè)面與瀏覽器使用統(tǒng)一的編碼字符集??稍贘SP中使用如下代碼實(shí)現(xiàn):<%@page pageEncoding="utf-8"

      contentType="text/html;charset=utf-8"%>

      其中,pageEncoding="utf-8"代表JSP使用utf-8字符集,contentType="text/html;charset=utf-8"代表瀏覽器使用utf-8字符集解釋收到的數(shù)據(jù)。

      若是從Servlet向?yàn)g覽器輸出內(nèi)容,可在Servlet中使用如下代碼使瀏覽器采用utf-8編碼進(jìn)行顯示:

      response.setContentType("text/html;charset=utf-8");

      PrintWriter out = response.getWriter();

      out.println("中文!");

      1.2 獲取表單中文參數(shù)時(shí)的亂碼

      對(duì)于<form>表單,在JSP/Servlet中可采用request.getParameter(“參數(shù)名”)來獲取參數(shù)值,但若不做適當(dāng)處理,表單參數(shù)值為中文時(shí)就會(huì)發(fā)生亂碼問題。這是因?yàn)椋糵orm>表單參數(shù)使用post方式提交時(shí),是通過request對(duì)象傳輸?shù)?,且Tomcat對(duì)其的編碼方式是iso-8859-1,當(dāng)表單頁(yè)和獲取表單的組件不是采用與之相同的字符集時(shí)就會(huì)出現(xiàn)亂碼了。

      解決方案:讓表單頁(yè)、封裝表單數(shù)據(jù)的request對(duì)象和接收表單數(shù)據(jù)的組件采用統(tǒng)一的編碼字符集。假定表單頁(yè)為index.jsp,接收表單頁(yè)為receive.jsp,則具體如下:

      若接收表單的是Servlet,則在Servlet中,取表單參數(shù)值之前先使用request.setCharacterEncoding("utf-8") 進(jìn)行轉(zhuǎn)碼即可。

      1.3 進(jìn)行數(shù)據(jù)庫(kù)操作時(shí)的亂碼

      這里數(shù)據(jù)庫(kù)以MySQL為例進(jìn)行討論。當(dāng)JSP/Servlet要與數(shù)據(jù)庫(kù)進(jìn)行交互時(shí),若JSP/Servlet、傳輸通道、數(shù)據(jù)庫(kù)三者采用的編碼字符集不一致也會(huì)導(dǎo)致亂碼問題的出現(xiàn)。傳輸通道是指:JSP/ Servlet連接數(shù)據(jù)庫(kù)的連接對(duì)象。

      解決方案:

      第一步:確定JSP/Servlet采用utf-8編碼,要寫至數(shù)據(jù)庫(kù)的中文數(shù)據(jù)正常,若數(shù)據(jù)來自表單,則參考1.2正確取到中文參數(shù)值。

      第二步:確定數(shù)據(jù)庫(kù)采用utf-8編碼。對(duì)于MySQL而言,可以使用其配置向?qū)гO(shè)置數(shù)據(jù)庫(kù)采用utf-8作為默認(rèn)字符集;創(chuàng)建表時(shí),對(duì)于允許中文的字段,設(shè)字段的字符集為utf-8。

      第三步:連接MySQL數(shù)據(jù)庫(kù)的連接對(duì)象上設(shè)置字符集為utf-8。假設(shè)數(shù)據(jù)庫(kù)名為db1,則獲取連接的數(shù)據(jù)庫(kù)URL如下:jdbc:mysql://localhost:3306/db1?user=root&password=123456

      &useUnicode=true&characterEncoding=utf8

      其中,useUnicode=true&characterEncoding=utf8為關(guān)鍵代碼,表示連接對(duì)象(即數(shù)據(jù)的傳輸通道)采用utf-8編碼字符集。

      2 結(jié)論

      JSP/Servlet開發(fā)Java Web應(yīng)用時(shí)的中文亂碼問題雖然惱人,但只要把握住解決問題的基本原則:保持?jǐn)?shù)據(jù)傳輸?shù)钠瘘c(diǎn)、終點(diǎn)、傳輸通道上的編碼一致,在出現(xiàn)中文亂碼后仔細(xì)檢查各處的編碼字符集是否一致并即時(shí)予以糾正,相信初學(xué)者也能很好地解決中文亂碼問題了。

      [1]孫衛(wèi)琴.Tomcat與Java Web開發(fā)技術(shù)詳解[M].電子工業(yè)出版社,2005,8.

      [2]王國(guó)輝,等.JSP數(shù)據(jù)庫(kù)系統(tǒng)開發(fā)完全手冊(cè)[M].人民郵電出版社,2006,3.

      TP39

      A

      1674-6708(2011)34-0193-01

      肖英,講師,工作單位:武漢軟件工程職業(yè)學(xué)院軟件技術(shù)系,研究方向:軟件開發(fā)

      猜你喜歡
      字符集亂碼表單
      電子表單系統(tǒng)應(yīng)用分析
      華東科技(2021年9期)2021-09-23 02:15:24
      這些真的不是亂碼,是漢字
      MySQL數(shù)據(jù)庫(kù)字符集的問題研究
      ORACLE字符集問題的分析
      淺談網(wǎng)頁(yè)制作中表單的教學(xué)
      ORACLE數(shù)據(jù)庫(kù)字符集問題及解決方法
      醫(yī)院信息系統(tǒng)Oracle數(shù)據(jù)庫(kù)中導(dǎo)入數(shù)據(jù)中文亂碼的解決技術(shù)
      炫邁:用神奇亂碼勾引你視線
      基于Infopath實(shí)現(xiàn)WEB動(dòng)態(tài)表單的研究
      電子世界(2012年24期)2012-12-17 10:49:06
      動(dòng)態(tài)表單技術(shù)在教學(xué)管理中的應(yīng)用*
      嘉兴市| 贞丰县| 承德市| 淮阳县| 修文县| 兴山县| 阜南县| 丰台区| 柳林县| 秀山| 阜南县| 安徽省| 北川| 弥渡县| 临清市| 健康| 临沂市| 科技| 咸宁市| 巴里| 宁海县| 布拖县| 黄浦区| 青川县| 临猗县| 盘山县| 三亚市| 禄劝| 忻城县| 无极县| 哈尔滨市| 保康县| 定西市| 三江| 黄骅市| 福州市| 东明县| 新田县| 海口市| 龙里县| 当雄县|