• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    Java Web開發(fā)中的亂碼問題

    2016-03-11 22:11:29賈文瀟葉慧莉武昌理工學(xué)院信息工程學(xué)院430063深圳市云迅通科技股份有限公司研發(fā)部587
    電子測試 2016年6期
    關(guān)鍵詞:開發(fā)

    賈文瀟,葉慧莉(.武昌理工學(xué)院信息工程學(xué)院,430063;.深圳市云迅通科技股份有限公司研發(fā)部,587)

    ?

    Java Web開發(fā)中的亂碼問題

    賈文瀟1,葉慧莉2
    (1.武昌理工學(xué)院信息工程學(xué)院,430063;2.深圳市云迅通科技股份有限公司研發(fā)部,518172)

    摘要:在進(jìn)行Java Web開發(fā)的過程中,采用的編碼與解碼的方式不統(tǒng)一時,就會產(chǎn)生亂碼問題。本文簡要介紹了在J2EE平臺下Java Web開發(fā)中常用的字符編碼方式,并分析中文亂碼產(chǎn)生的原因,并在此基礎(chǔ)上針對常見的幾種中文亂碼問題給出相應(yīng)的解決方案,使開發(fā)人員可以更方便的解決亂碼問題。

    關(guān)鍵詞:中文亂碼;Java Web 開發(fā);字符編碼

    0 引言

    經(jīng)過多年發(fā)展,Java技術(shù)已經(jīng)成為了最卓越的應(yīng)用開發(fā)平臺,在移動互聯(lián)網(wǎng)、網(wǎng)絡(luò)計算等領(lǐng)域取得了成功的應(yīng)用。在Java Web應(yīng)用開發(fā)中,頁面中顯示的中文經(jīng)常出現(xiàn)亂碼情況,其原因就是組件與組件、組件與瀏覽器、組件與數(shù)據(jù)庫之間等采用的編碼方式不同,所以在應(yīng)用程序運(yùn)行的過程中,汪汪要經(jīng)過多次字符編碼之間的轉(zhuǎn)換才能正常的顯示,而在轉(zhuǎn)換的過程中一旦設(shè)置錯誤就會導(dǎo)致中文亂碼。本文從Java Web常見的編碼和運(yùn)行原理出發(fā),詳細(xì)介紹了Java Web開發(fā)過程中常見的中文亂碼問題以及解決方案。

    1 Java Web應(yīng)用開發(fā)中常用編碼

    1.1 ISO8859-1

    ISO8859-1編碼屬于單字節(jié)編碼,是國際標(biāo)準(zhǔn)化組織內(nèi)ISO/ IEC 8859的第一個8位字符集,最多能夠表示的字符范圍是0-255,應(yīng)用于英文系列,是Java網(wǎng)絡(luò)傳輸中使用的標(biāo)準(zhǔn)字符集。

    1.2 UTF-8

    UTF-8編碼可以兼容ISO8859-1編碼和Unicode編碼,用1 到6個字節(jié)不等編碼Unicode字符。同時UTF-8編碼帶有簡單的校驗功能,一般來說,用在網(wǎng)頁上可以在同一頁面顯示中文簡體繁體及其他語言。

    1.3 Unicode

    Unicode屬于統(tǒng)一的字符編碼標(biāo)準(zhǔn)集,可以用來表示所用語言的字符,使用2個字節(jié)或4個字節(jié)對每一個字符進(jìn)行編碼,但是該編碼并不兼容ISO8859-1編碼,可以實現(xiàn)跨語言、跨平臺的文本轉(zhuǎn)換以及處理要求,是Java語言默認(rèn)的字符集。

    1.4 GB2312/GBK

    GB2312和GBK是國國家標(biāo)準(zhǔn)漢字信息交換用編碼,專門用來表示漢子,簡稱國標(biāo)碼,屬于雙字節(jié)編碼。其中GBK是對GB2312的擴(kuò)充,能夠用來同時表示繁體字和簡體字,而GB2312只能夠表示簡體字。

    2 Java Web的編碼機(jī)制

    為了讓Java編寫的程序能夠在不同的語言平臺運(yùn)行,Java在其語言內(nèi)部使用了統(tǒng)一的Unicode字符集來表示字符。Java源程序是先根據(jù)操作系統(tǒng)默認(rèn)的編碼方式來完成轉(zhuǎn)碼,并通過I/O操作得到相應(yīng)的編碼字節(jié)流,將其轉(zhuǎn)換成UTF-8編碼寫入Class文件中。

    當(dāng)操作文件是簡體中文時默認(rèn)的編碼格式是GBK,編譯時采用GBK方式轉(zhuǎn)化成Unicode,在轉(zhuǎn)化成UTF-8寫入到Class文件中。在原系統(tǒng)中不會出現(xiàn)亂碼現(xiàn)象,但是一旦移動到英文系統(tǒng)中很可能出現(xiàn)中文亂碼的現(xiàn)象,其原因就是Java采用UTF-8讀取Class文件,再將Class文件轉(zhuǎn)化為Unicode,在編碼轉(zhuǎn)換的過程中,都是通過Unicode編碼來作為中介來完成的,這時造成亂碼的主要原因是使用了錯誤的字符集解碼字節(jié)流或?qū)⒔o定的字節(jié)流用錯誤的字符集解碼。

    3 Java Web開發(fā)亂碼問題解決方法

    3.1 頁面顯示亂碼

    在訪問JSP頁面或Servlet產(chǎn)生的頁面時,如果頁面上本該顯示中文的地方顯示為亂碼,這可能是瀏覽器的顯示不正確,也可能是后臺在生成界面時其內(nèi)容就是亂碼。如果是瀏覽器問題就需要設(shè)置JSP或Servlet的屬性,在對JSP設(shè)置使用page指令時,其設(shè)置如下:

    〈% @ p a g e c o n t e n t T y p e =”t e x t / html”;charset=”GB2312”〉

    而對于Servlet生成頁面,在輸出頁面前調(diào)用

    setContentType()方法,代碼如下:

    r e s p o n s e . s e t C o n t e n t T y p e (“t e x t / html;charset=GB2312”)。

    3.2 用戶提交數(shù)據(jù)亂碼

    用戶數(shù)據(jù)提交有Post和Get兩種方法。

    (1)采用get方式提交顯示亂碼及解決方案

    采用get或參數(shù)方式提交數(shù)據(jù),數(shù)據(jù)是附加在URL中,默認(rèn)采用ISO-8859-1的編碼方式編碼,此時在JSP中設(shè)置的charset無效,為了解決這種情況下的亂碼,要在servlet

    中添加代碼:

    String str=new String(request.getParameter("參數(shù)名").getBytes("ISO-8859-1"),"utf-8")。

    (2)采用post方式提交顯示亂碼及解決方案

    采用post提交方式,提交的數(shù)據(jù)是通過Http的實體內(nèi)容發(fā)送給服務(wù)器的,數(shù)據(jù)根據(jù)瀏覽器的charset編碼方式進(jìn)行編碼,服務(wù)器在接收的時候也需要對request設(shè)置正確的解碼方式,設(shè)置的解碼方式不一致就會出現(xiàn)亂碼。

    3.3 數(shù)據(jù)庫中數(shù)據(jù)亂碼

    在JSP/Servlet與數(shù)據(jù)庫進(jìn)行交互時,如果JSP/Servletz、傳輸通道、數(shù)據(jù)庫采用的編碼字符集不一致就會產(chǎn)生亂碼問題。要解決這一問題,首先確保JSP/Servlet采用的是GBK編碼,確保數(shù)據(jù)庫中的中文數(shù)據(jù)正常;其次確保數(shù)據(jù)庫采用GBK編碼,對于MySQL而言可以使用其配置向?qū)гO(shè)置數(shù)據(jù)庫采用GBK編碼作為默認(rèn)集;最后連接MySQL數(shù)據(jù)庫的連接對象上設(shè)置字符集為GBK編碼,如下:

    jdbc:mysql://localhost:3306/db1user=root&password= 123456&useUnicode=true&characterEncoding=GBK為連接字符串URL,其中characterEncoding=GBK是關(guān)鍵代碼,表示連接對象采用GBK編碼字符集。

    4 結(jié)束語

    本文從Java Web應(yīng)用開發(fā)的字符編碼理論出發(fā),介紹常用的字符編碼,并分析出現(xiàn)亂碼的原因,并給出了詳細(xì)的解決方法。綜上所述,在Java Web應(yīng)用開發(fā)中,處理亂碼問題,首先要抓住亂碼的根源,按照顯示界面、接收數(shù)據(jù)、保存數(shù)據(jù)、讀取數(shù)據(jù)和將數(shù)據(jù)顯示給用戶的順序,逐步查找出問題的那一步,并采取相應(yīng)的方法。

    參考文獻(xiàn)

    [1]王子君,范學(xué)蜂,張志浩. Java編碼問題研究與應(yīng)用[J].計算機(jī)工程, 2002

    [2]王進(jìn).基于JSP的Web開發(fā)中文亂碼問題研究[J].信息系統(tǒng)工程,2012

    [3]劉永立.Java環(huán)境下Web程序的中文亂碼問題與對策[J].電腦編程技巧與維護(hù),2011

    [4]孫鑫.Java Web開發(fā)詳解[M].北京:電子工業(yè)出版社,2007 [5]李響,郝靜靜.Java Web開發(fā)中文亂碼問題的研究與解決[J].電腦知識與技術(shù),2012

    The garbage problem in the development of Web Java

    Jia Wenxiao1,Ye Huili2
    (1.Wuchang University of Technology Information and Engineering School,430063 2.Shenzhen cloud fast through Polytron Technologies Inc R & D department,518172)

    Abstract:In Java Web development process, the use of the encoding and decoding way is not unified,will generate the code.This paper briefly introduces the J2EE platform is commonly used in Java Web development way of character encoding,and analyzes the causes of Chinese garbled,on the basis of several common Chinese garbled question for given corresponding solutions,the developer can more easily solve the problem of gibberish.

    Keywords:Chinese garbled;Java Web development;A character encoding

    猜你喜歡
    開發(fā)
    高中歷史教學(xué)中對歷史圖片的開發(fā)及實際應(yīng)用
    考試周刊(2016年85期)2016-11-11 01:57:37
    在線投稿與編輯系統(tǒng)的設(shè)計與開發(fā)
    河南方言文化資源的保護(hù)及其開發(fā)利用的研究
    遵義紅色旅游開發(fā)對策研究
    基于J2EE和Ionic的ITer學(xué)習(xí)APP設(shè)計與開發(fā)
    單片機(jī)在電子技術(shù)中的應(yīng)用和開發(fā)
    芜湖县| 汤原县| 鞍山市| 天祝| 正安县| 惠来县| 徐闻县| 柏乡县| 宜兴市| 惠东县| 洛南县| 商都县| 莱芜市| 鄂州市| 恩施市| 东阿县| 雷波县| 富顺县| 万盛区| 罗平县| 射洪县| 德保县| 鄄城县| 池州市| 安庆市| 馆陶县| 阿坝县| 仁寿县| 宜昌市| 法库县| 昭通市| 长寿区| 清丰县| 运城市| 疏勒县| 信宜市| 柞水县| 贡山| 淄博市| 南涧| 新乐市|