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

Java程序中亂碼的由來(lái)及解決方法

2007-08-25 01:30:42王洪香
關(guān)鍵詞:程序

王洪香

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

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

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

1常見的字符編碼

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

(1)IS08859-1碼

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

(2)GB2312編碼

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

(3)GBK編碼

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

(4)Unicode編碼

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

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

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

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

程序1:

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

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

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

程序2:

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

3解決的方法

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

4結(jié)束語(yǔ)

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

猜你喜歡
程序
給Windows添加程序快速切換欄
試論我國(guó)未決羈押程序的立法完善
失能的信仰——走向衰亡的民事訴訟程序
“程序猿”的生活什么樣
英國(guó)與歐盟正式啟動(dòng)“離婚”程序程序
基于VMM的程序行為異常檢測(cè)
偵查實(shí)驗(yàn)批準(zhǔn)程序初探
我國(guó)刑事速裁程序的構(gòu)建
創(chuàng)衛(wèi)暗訪程序有待改進(jìn)
恐怖犯罪刑事訴訟程序的完善
主站蜘蛛池模板: 国产亚洲欧美在线视频| 国产三级国产精品国产普男人 | 色妞www精品视频一级下载| 久久精品欧美一区二区| 欧美伦理一区| 91国内在线观看| 伊人天堂网| 亚洲男人天堂网址| 国产福利免费在线观看| 青青草久久伊人| 久久精品电影| 国内精品视频在线| 国产色爱av资源综合区| 精品久久久久久久久久久| 精品一区国产精品| 欧美成人综合在线| 香蕉久人久人青草青草| 久草视频一区| 中文字幕在线播放不卡| 一级毛片在线播放免费观看 | 亚洲天堂自拍| 日韩毛片免费观看| 精品无码一区二区在线观看| 免费a级毛片18以上观看精品| 爽爽影院十八禁在线观看| www.av男人.com| 91成人免费观看在线观看| 欧美精品导航| 无码高潮喷水在线观看| 88av在线| 欧美一区国产| 日日拍夜夜操| 精品无码一区二区三区电影| 狠狠躁天天躁夜夜躁婷婷| www成人国产在线观看网站| av在线人妻熟妇| 一区二区日韩国产精久久| 99激情网| 免费高清自慰一区二区三区| 98超碰在线观看| 美女被狂躁www在线观看| 夜精品a一区二区三区| 日韩国产另类| 欧美19综合中文字幕| 中文字幕 91| 很黄的网站在线观看| 国产综合在线观看视频| 国产自在线拍| 亚洲日本一本dvd高清| 中文字幕不卡免费高清视频| 国产精品亚欧美一区二区三区| P尤物久久99国产综合精品| 免费久久一级欧美特大黄| 美女高潮全身流白浆福利区| 国产在线观看一区二区三区| 又粗又硬又大又爽免费视频播放| 理论片一区| 亚洲欧美日韩高清综合678| 亚洲欧美在线综合图区| 呦女亚洲一区精品| 一级毛片免费高清视频| 在线另类稀缺国产呦| 亚洲视频在线观看免费视频| 成人免费一区二区三区| 日本亚洲成高清一区二区三区| 亚洲AV无码一区二区三区牲色| 国产国产人在线成免费视频狼人色| 日本欧美中文字幕精品亚洲| 国产在线精彩视频二区| 精品伊人久久久久7777人| 欧美日韩中文字幕在线| 色哟哟精品无码网站在线播放视频| 国产精品原创不卡在线| 真实国产乱子伦高清| 欧美亚洲日韩不卡在线在线观看| 欧美亚洲另类在线观看| 亚洲精品在线观看91| 国产精品嫩草影院av| 欧洲亚洲一区| 国产免费久久精品99re不卡| 日韩一区二区三免费高清| 伊人中文网|