亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Java > 正文

JAVA及相關字符集編碼問題研究分享

2019-11-26 15:23:20
字體:
來源:轉載
供稿:網友

下面本文將針對以上幾點問題進行描述討論,我們就以“中文”兩個字為例來說明,查找相關資料可知“中文”的GB2312編碼是“d6d0 cec4”,為Unicode編碼為"4e2d 6587",UTF編碼就是"e4b8ad e69687"。(注意,“中文”這兩個字沒有iso8859-1編碼,但可以用iso8859-1編碼來"表示")。

一、編碼基本知識:

最早的編碼是iso8859-1,和ascii編碼相似。但為了方便表示各種各樣的語言,逐漸出現了很多標準編碼,重要的有如下幾個:

1. iso8859-1

屬于單字節編碼,最多能表示的字符范圍是0-255,應用于英文系列。比如,字母a的編碼為0x61=97。

很明顯,iso8859-1編碼表示的字符范圍很窄,無法表示中文字符。但是,由于是單字節編碼,和計算機最基礎的表示單位一致,所以很多時候,仍舊使用iso8859-1編碼來表示。而且在很多協議上,默認使用該編碼。比如,雖然"中文"兩個字不存在iso8859-1編碼,以gb2312編碼為例,應該是"d6d0 cec4"兩個字符,使用iso8859-1編碼的時候則將它拆開為4個字節來表示:"d6 d0 ce c4"(事實上,在進行存儲的時候,也是以字節為單位處理的)。而如果是UTF編碼,則是6個字節"e4 b8 ad e6 96 87"。很明顯,這種表示方法還需要以另一種編碼為基礎。

2. GB2312/GBK

這就是漢子的國標碼,專門用來表示漢字,是雙字節編碼,而英文字母和iso8859-1一致(兼容iso8859-1編碼)。其中gbk編碼能夠用來同時表示繁體字和簡體字,而gb2312只能表示簡體字,gbk是兼容gb2312編碼的。

3. unicode

這是最統一的編碼,可以用來表示所有語言的字符,而且是定長雙字節(也有四字節的)編碼,包括英文字母在內。所以可以說它是不兼容iso8859-1編碼的,也不兼容任何編碼。不過,相對于iso8859-1編碼來說,uniocode編碼只是在前面增加了一個0字節,比如字母a為"00 61"。

需要說明的是,定長編碼便于計算機處理(注意GB2312/GBK不是定長編碼),而unicode又可以用來表示所有字符,所以在很多軟件內部是使用unicode編碼來處理的,比如java。

4. UTF

考慮到unicode編碼不兼容iso8859-1編碼,而且容易占用更多的空間:因為對于英文字母,unicode也需要兩個字節來表示。所以unicode不便于傳輸和存儲。因此而產生了utf編碼,utf編碼兼容iso8859-1編碼,同時也可以用來表示所有語言的字符,不過,utf編碼是不定長編碼,每一個字符的長度從1-6個字節不等。另外,utf編碼自帶簡單的校驗功能。一般來講,英文字母都是用一個字節表示,而漢字使用三個字節。

注意,雖然說utf是為了使用更少的空間而使用的,但那只是相對于unicode編碼來說,如果已經知道是漢字,則使用GB2312/GBK無疑是最節省的。不過另一方面,值得說明的是,雖然utf編碼對漢字使用3個字節,但即使對于漢字網頁,utf編碼也會比unicode編碼節省,因為網頁中包含了很多的英文字符。

二、java對字符的處理

在編寫java應用程序中,會有多處涉及到字符集編碼,有些地方需要進行正確的設置,有些地方需要進行一定程度的處理。

1. getBytes(charset)

這是java字符串處理的一個標準函數,其作用是將字符串所表示的字符按照charset編碼,并以字節方式表示。注意字符串在java內存中總是按unicode編碼存儲的。比如"中文",正常情況下(即沒有錯誤的時候)存儲為"4e2d 6587",如果charset為"gbk",則被編碼為"d6d0 cec4",然后返回字節"d6 d0 ce c4"。如果charset為"utf8"則最后是"e4 b8 ad e6 96 87"。如果是"iso8859-1",則由于無法編碼,最后返回 "3f 3f"(注: "3f 3f"是兩個問號)。

2. new String(charset)

這是java字符串處理的另一個標準函數,和上一個函數的作用相反,將字節數組按照charset編碼進行組合識別,最后轉換為unicode存儲。參考上述getBytes的例子,"gbk" 和"utf8"都可以得出正確的結果"4e2d 6587",但iso8859-1最后變成了"003f 003f"(兩個問號)。

因為utf8可以用來表示/編碼所有字符,所以new String( str.getBytes( "utf8" ), "utf8" ) === str,即完全可逆。

3. setCharacterEncoding()

該函數用來設置http請求或者相應的編碼。

對于request,是指提交內容的編碼,指定后可以通過getParameter()則直接獲得正確的字符串,如果不指定,則默認使用iso8859-1編碼,需要進一步處理。參見下述"表單輸入"。值得注意的是在執行setCharacterEncoding()之前,不能執行任何getParameter()。java doc上說明:This method must be called prior to reading request parameters or reading input using getReader()。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
色视频www在线播放国产成人| 久久久免费在线观看| 日韩av大片在线| 午夜精品美女自拍福到在线| 日韩乱码在线视频| 亚洲激情视频网| 国产主播喷水一区二区| 国产精品第一视频| 欧美在线不卡区| 欧美日韩亚洲视频| 亚洲级视频在线观看免费1级| 亚洲综合日韩中文字幕v在线| 国产欧美va欧美va香蕉在| 欧美精品做受xxx性少妇| 欧美一区二区三区……| 91美女福利视频高清| 国产成人av网址| 欧美日韩国产中文精品字幕自在自线| 欧美中文字幕在线观看| 91av中文字幕| 青青草原一区二区| 欧美日韩午夜剧场| 亚洲精品短视频| 日韩在线中文视频| 国产精品视频免费观看www| 亚洲日韩中文字幕| 亚洲一区中文字幕在线观看| 97人洗澡人人免费公开视频碰碰碰| 亚洲国产精品va在线观看黑人| 最近2019年日本中文免费字幕| 久久精品国产一区二区电影| 91欧美精品午夜性色福利在线| 日韩高清中文字幕| 国产日韩av在线播放| 97久久国产精品| 亚洲日韩第一页| 久热精品视频在线| 亚洲美女av在线播放| 久久亚洲电影天堂| 亚洲精品wwww| 欧美多人爱爱视频网站| …久久精品99久久香蕉国产| 精品视频在线导航| 亚洲欧美国产精品专区久久| 国产综合视频在线观看| 国产在线久久久| 日韩美女av在线| 狠狠躁夜夜躁人人爽天天天天97| 欧美天堂在线观看| 国产精品揄拍500视频| 日韩av在线免费看| 欧美日韩一区二区在线播放| 欧美激情中文网| 日韩女优在线播放| 国产亚洲精品高潮| 在线观看欧美日韩国产| 日韩hd视频在线观看| 色777狠狠综合秋免鲁丝| 欧美激情精品久久久久久蜜臀| 成人久久久久久久| 欧美成人精品激情在线观看| 亚洲电影免费观看高清完整版在线| 中文字幕亚洲无线码a| 国产欧美精品一区二区三区-老狼| 亚洲色图国产精品| 亚洲激情在线观看视频免费| 亚洲精品之草原avav久久| 久久免费精品视频| 国产精品三级在线| 怡红院精品视频| 色www亚洲国产张柏芝| 欧美日韩国产一中文字不卡| 亚洲激情久久久| 国产精品成人av在线| 亚洲人精选亚洲人成在线| 精品亚洲精品福利线在观看| 97人人模人人爽人人喊中文字| 国产一区二区三区毛片| 中文字幕在线观看亚洲| 色偷偷av一区二区三区| 欧美性生交大片免网| 欧美日韩国产一中文字不卡| 国产精品视频大全| 精品亚洲国产视频| 国产精品手机播放| 欧美激情成人在线视频| 在线日韩欧美视频| 精品国产精品自拍| 日韩欧美一区二区三区| 亚洲天堂av女优| 国产精品美女久久久免费| 成人精品久久一区二区三区| 亚洲欧美日韩一区二区三区在线| 国产成+人+综合+亚洲欧洲| 欧美午夜性色大片在线观看| 久久色免费在线视频| 中文字幕精品www乱入免费视频| 精品国产精品三级精品av网址| 91国内揄拍国内精品对白| 欧美另类交人妖| 日韩精品在线视频观看| 久久精品一区中文字幕| 亚洲国产高潮在线观看| 亚洲成人av中文字幕| 另类专区欧美制服同性| 国产一区二区欧美日韩| 欧美亚洲午夜视频在线观看| 久久av资源网站| 欧美色另类天堂2015| 日韩欧美国产视频| 国产不卡精品视男人的天堂| 亚洲2020天天堂在线观看| 久久精品视频在线播放| 成人黄色免费片| 国内精品模特av私拍在线观看| 亚洲美女视频网| 色综合久综合久久综合久鬼88| 日产精品久久久一区二区福利| 日韩欧美中文字幕在线观看| 欧美孕妇孕交黑巨大网站| 欧美成人小视频| 亚洲图片制服诱惑| 欧美日本在线视频中文字字幕| 欧美在线激情网| 亚洲欧美日韩爽爽影院| 中文字幕亚洲无线码a| 国产精品久久久久久久久久三级| 精品无人国产偷自产在线| 国产91久久婷婷一区二区| 成人淫片在线看| 2019中文字幕全在线观看| 亚洲欧美国产制服动漫| 日韩av大片在线| 不卡伊人av在线播放| 久久久久国产精品免费| 久久精品国产免费观看| 91av国产在线| 亚洲小视频在线观看| 日韩网站免费观看高清| 热草久综合在线| 欧美亚洲一区在线| 狠狠躁夜夜躁人人躁婷婷91| 欧美电影免费观看高清| 亚洲欧美中文字幕| 在线播放精品一区二区三区| 色婷婷综合成人| 久久91精品国产91久久跳| 92国产精品视频| 久久在线视频在线| 国产精品麻豆va在线播放| 欧美性猛交xxxxx水多| 欧美体内谢she精2性欧美| 久久久久久久国产精品| 成人免费视频在线观看超级碰| 日韩成人av在线播放| 热re91久久精品国99热蜜臀| 日韩欧美在线观看| 正在播放国产一区| 精品久久久久久久久久ntr影视| 久久天天躁狠狠躁夜夜躁| 欧美成人精品在线播放| 亚洲的天堂在线中文字幕| 精品国产91久久久久久| 亚洲图中文字幕|