亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        Java程序中亂碼的由來及解決方法

        2007-08-25 01:30:42王洪香
        智能計算機與應(yīng)用 2007年4期
        關(guān)鍵詞:字符集亂碼數(shù)組

        王洪香

        摘要:從編碼出發(fā),分析了在Java中可能會產(chǎn)生編碼問題的兩個環(huán)節(jié),并對不同情況給出了有效的解決方法。

        關(guān)鍵詞:Java漢字編碼字符集

        在Java語言的應(yīng)用中,對字符的支持并非如同Java Soft的標(biāo)準(zhǔn)規(guī)范中所宣稱的那樣完美,尤其是中文字符集,所以在開發(fā)過程涉及到對漢字的處理時經(jīng)常會出現(xiàn)亂碼,給開發(fā)人員帶來諸多不便。

        1常見的字符編碼

        計算機中存儲、處理和傳送的數(shù)據(jù)是二進制的形式。各種文字、符號也必須用二進制數(shù)編碼來表示,因此出現(xiàn)了一些不同形式的字符編碼。

        (1)IS08859-1碼

        IS08859-1碼屬于單字節(jié)編碼,最多能表示的字符范圍是0-255,應(yīng)用于英文系列。由于是單字節(jié)編碼,和計算機內(nèi)表示單位一致,所以很多時候,仍舊使用IS08859-1編碼來表示。而且在很多協(xié)議上,默認使用該編碼。

        (2)GB2312編碼

        GB2312編碼是中華人民共和國國家標(biāo)準(zhǔn)漢字信息交換用編碼,是由國家標(biāo)準(zhǔn)總局發(fā)布的關(guān)于簡化漢字的編碼,通行于中國大陸地區(qū)及新加坡,簡稱國標(biāo)碼。兩個字節(jié)中,第一個字節(jié)(高字節(jié))的值為區(qū)號值加32(20H),第二個字符(低字節(jié))的值為位號值32(20H),用這兩個值來表示一個漢字的編碼。該字符集是一般中文操作系統(tǒng)默認的字符集。

        (3)GBK編碼

        GBK編碼是GB2312的擴展,是向上兼容的。它的編碼范圍是0x8140至0xfefe,其所有字符都可以一一映射至U-nicode2.0,實際上Java提供了對GBK字符集的支持。

        (4)Unicode編碼

        Unicode編碼是微軟提出的解決多國字符問題的多字節(jié)等長16位編碼,它對英文字符采取前面加“O”字節(jié)的策略實現(xiàn)等長兼容。如“A”字符的ASCII碼為0x41,Unicode碼為0x00,0x41。所以如果將高位字節(jié)去除,可以近似地將Uni-code轉(zhuǎn)換為IS08859-1,它是Java內(nèi)碼的編碼方式。

        2 Java程序運行中出現(xiàn)的“?”和一些亂碼的由來

        (1)將字符的Unicode碼轉(zhuǎn)換成本地字符集碼

        下面的程序在將Unicode字符集轉(zhuǎn)換成“IS08859-1”字符集時出現(xiàn)了“?”號。

        程序1:

        從上面程序中可以看出。由于Java中的字符采用是的Unicode編碼,每個字符都占用兩個字節(jié),直接把每個字符中的內(nèi)容對應(yīng)著的整數(shù)打印出來,顯示的結(jié)果就是這字符的Unicode碼。String類中的getBytes方法,是將Unicode碼的字符串中的每個字符數(shù)字,轉(zhuǎn)換成該字符在指定的字符集下的數(shù)字,最后將這些數(shù)字存放到一個字節(jié)數(shù)組中返回。將一個字符的Unicode碼轉(zhuǎn)換成某種本地字符集碼的過程叫編碼。程序中的byte[]buf=strChina.getBytes(“is08859-1”)語句就是將Unicode碼轉(zhuǎn)換成了“IS08859-1”了。由于目標(biāo)代碼集中不存在對應(yīng)代碼,則得到的結(jié)果都是“3t”Hex值中的“3t”在Java中的用System.out.println(“u0031”)語句輸出的結(jié)果就是“?”,這就是我們在Java程序中經(jīng)常看到的“?”號的由來。

        (2)將本地字符集碼轉(zhuǎn)換成Unicode碼

        在下面的程序中完成的是將鍵盤字節(jié)輸入流中的每個字節(jié)讀到一個字節(jié)數(shù)組中,然后將字節(jié)數(shù)組中的數(shù)據(jù)當(dāng)作某種本地字符集碼轉(zhuǎn)換成Unicode碼的字符串,此過程為解碼。

        程序2:

        從程序中看出,存有“遼工大”三個字符的GB2312碼的字節(jié)數(shù)組,使用IS08859-1解碼后的Unicode字符串的字符并不是原來的三個字符的Unicode碼,而是被解碼成了六個字符,每個字符的低字節(jié)的內(nèi)容都是原來字節(jié)數(shù)組中的數(shù)據(jù),而高字節(jié)都是0。程序中打印的b4所對應(yīng)的字符在內(nèi)容中實際上是兩個字節(jié)00b4。因此在解碼時出現(xiàn)了一些除“?”以外的亂碼。

        3解決的方法

        對于程序1,由于當(dāng)前系統(tǒng)默認的編碼方式是GB2312碼,將程序中的語句:

        4結(jié)束語

        對于前面提到的字符編碼的轉(zhuǎn)換不僅存在于Java應(yīng)用中,也存在于JSP和Servlet的應(yīng)用中,有時還會出現(xiàn)這兩個過程的疊加。甚至是兩個過程的反復(fù)疊加,因此Java應(yīng)用中會產(chǎn)生一些與平臺相關(guān)的問題,在程序的開發(fā)過程一定要引起注意。

        猜你喜歡
        字符集亂碼數(shù)組
        JAVA稀疏矩陣算法
        電腦報(2022年13期)2022-04-12 00:32:38
        JAVA玩轉(zhuǎn)數(shù)學(xué)之二維數(shù)組排序
        電腦報(2020年24期)2020-07-15 06:12:41
        這些真的不是亂碼,是漢字
        MySQL數(shù)據(jù)庫字符集的問題研究
        ORACLE字符集問題的分析
        ORACLE數(shù)據(jù)庫字符集問題及解決方法
        醫(yī)院信息系統(tǒng)Oracle數(shù)據(jù)庫中導(dǎo)入數(shù)據(jù)中文亂碼的解決技術(shù)
        尋找勾股數(shù)組的歷程
        炫邁:用神奇亂碼勾引你視線
        如何解決Tomcat的亂碼
        少妇我被躁爽到高潮在线影片 | 久久午夜无码鲁丝片直播午夜精品| 亚洲mv国产精品mv日本mv| 日本在线中文字幕一区二区| 亚洲毛片在线观看免费| 久久人妻少妇嫩草av无码专区| 女人张开腿让男人桶爽| 国产高清在线精品一区| 亚洲另类激情综合偷自拍图| 日本一区二区高清视频| 久久综合伊人77777麻豆| 最近日本免费观看高清视频| 久久福利资源国产精品999| 国产精品区二区东京在线| 日韩人妻无码精品一专区二区三区 | 人妻系列中文字幕av| 欧美牲交a欧美牲交aⅴ| 国产成人精品成人a在线观看| 国产丝袜免费精品一区二区| 中文字幕日本av网站| 777精品出轨人妻国产| 波多野结衣免费一区视频| AV无码人妻一区二区三区牛牛| av免费看网站在线观看| 国产嫩草av一区二区三区| 美女张开腿让男人桶爽| 国产精品偷伦视频免费手机播放| 国产一级r片内射视频播放| 91九色老熟女免费资源| 少妇无码太爽了不卡视频在线看| 亚洲国产cao| 久久精品国产亚洲av四区| 成年站免费网站看v片在线| 国产激情з∠视频一区二区 | 久久久久久久女国产乱让韩| 国产 在线播放无码不卡| 麻豆人妻性色av专区0000| 亚洲av无码一区东京热| 亚洲a∨无码一区二区| 91久久精品人妻一区二区| 一本色道久久88加勒比综合|