日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

字符集和字符编码

發布時間:2025/3/20 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 字符集和字符编码 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

#1.為什么要有字符集,字符集是什么?

在介紹字符集之前,我們先了解下為什么要有字符集?

我們在計算機屏幕上看到的是實體化的文字,而在計算機存儲介質中存放的實際是二進制的比特流。那么在這兩者之間的轉換規則就需要一個統一的標準,否則把我們的U盤插到老板的電腦上,文檔就亂碼了;小伙伴QQ上傳過來的文件,在我們本地打開又亂碼了。于是為了實現轉換標準,各種字符集標準就出現了。

什么是字符集?

簡單的說字符集就規定了某個文字對應的二進制數字存放方式(編碼)和某串二進制數值代表了哪個文字(解碼)的轉換關系。

那么為什么會有那么多字符集標準呢?

這個問題實際非常容易回答。問問自己為什么我們的插頭拿到英國就不能用了呢?為什么顯示器同時有DVI,VGA,HDMI,DP這么多接口呢?很多規范和標準在最初制定時并不會意識到這將會是以后全球普適的準則,或者處于組織本身利益就想從本質上區別于現有標準。于是,就產生了那么多具有相同效果但又不相互兼容的標準了。

#2.什么是字符編碼?

字符集只是一個規則集合的名字,對應到真實生活中,字符集就是對某種語言的稱呼。

例如:英語,漢語,日語。對于一個字符集來說要正確編碼轉碼一個字符需要三個關鍵元素:字庫表(character repertoire)、編碼字符集(coded character set)、字符編碼(character encoding form)。其中字庫表是一個相當于所有可讀或者可顯示字符的數據庫,字庫表決定了整個字符集能夠展現表示的所有字符的范圍。編碼字符集,即用一個編碼值code point來表示一個字符在字庫中的位置。字符編碼,將編碼字符集和實際存儲數值之間的轉換關系。一般來說都會直接將code point的值作為編碼后的值直接存儲。例如在ASCII中A在表中排第65位,而編碼后A的數值是0100 0001也即十進制的65的二進制轉換結果。

#3.ASCII

ASCII碼是7位編碼,編碼范圍是0x00-0x7F。ASCII字符集包括英文字母、阿拉伯數字和標點符號等字符。其中0x00-0x20和0x7F共33個控制字符。

只支持ASCII碼的系統會忽略每個字節的最高位,只認為低7位是有效位。HZ字符編碼就是早期為了在只支持7位ASCII系統中傳輸中文而設計的編碼。早期很多郵件系統也只支持ASCII編碼,為了傳輸中文郵件必須使用BASE64或者其他編碼方式。

#4.GB2312

GB2312是基于區位碼設計的,區位碼把編碼表分為94個區,每個區對應94個位,每個字符的區號和位號組合起來就是該漢字的區位碼。區位碼一般 用10進制數來表示,如1601就表示16區1位,對應的字符是“啊”。在區位碼的區號和位號上分別加上0xA0就得到了GB2312編碼。

區位碼中01-09區是符號、數字區,16-87區是漢字區,10-15和88-94是未定義的空白區。它將收錄的漢字分成兩級:第一級是常用漢字計 3755個,置于16-55區,按漢語拼音字母/筆形順序排列;第二級漢字是次常用漢字計3008個,置于56-87區,按部首/筆畫順序排列。一級漢字 是按照拼音排序的,這個就可以得到某個拼音在一級漢字區位中的范圍,很多根據漢字可以得到拼音的程序就是根據這個原理編寫的。

GB2312字符集中除常用簡體漢字字符外還包括希臘字母、日文平假名及片假名字母、俄語西里爾字母等字符,未收錄繁體中文漢字和一些生僻字。可以用繁體漢字測試某些系統是不是只支持GB2312編碼。

GB2312的編碼范圍是0xA1A1-0x7E7E,去掉未定義的區域之后可以理解為實際編碼范圍是0xA1A1-0xF7FE。
EUC-CN可以理解為GB2312的別名,和GB2312完全相同。

區位碼更應該認為是字符集的定義,定義了所收錄的字符和字符位置,而GB2312及EUC-CN是實際計算機環境中支持這種字符集的編碼。HZ和ISO- 2022-CN是對應區位碼字符集的另外兩種編碼,都是用7位編碼空間來支持漢字。區位碼和GB2312編碼的關系有點像 Unicode和UTF-8。

#5.GBK

GBK編碼是GB2312編碼的超集,向下完全兼容GB2312,同時GBK收錄了Unicode基本多文種平面中的所有CJK漢字。同 GB2312一樣,GBK也支持希臘字母、日文假名字母、俄語字母等字符,但不支持韓語中的表音字符(非漢字字符)。GBK還收錄了GB2312不包含的 漢字部首符號、豎排標點符號等字符。

GBK的整體編碼范圍是為0x8140-0xFEFE,不包括低字節是0×7F的組合。高字節范圍是0×81-0xFE,低字節范圍是0x40-7E和0x80-0xFE。

低字節是0x40-0x7E的GBK字符有一定特殊性,因為這些字符占用了ASCII碼的位置,這樣會給一些系統帶來麻煩。
有些系統中用0x40-0x7E中的字符(如“|”)做特殊符號,在定位這些符號時又沒有判斷這些符號是不是屬于某個 GBK字符的低字節,這樣就會造成錯誤判斷。在支持GB2312的環境下就不存在這個問題。需要注意的是支持GBK的環境中小于0x80的某個字節未必就 是ASCII符號;另外就是最好選用小于0×40的ASCII符號做一些特殊符號,這樣就可以快速定位,且不用擔心是某個漢字的另一半。Big5編碼中也 存在相應問題。

CP936和GBK的有些許差別,絕大多數情況下可以把CP936當作GBK的別名。

#6.unicode

每一種語言的不同的編碼頁,增加了那些需要支持不同語言的軟件的復雜度。因而人們制定了一個世界標準,叫做unicode。unicode為每個字符提供 了唯一的特定數值,不論在什么平臺上、不論在什么軟件中,也不論什么語言。也就是說,它世界上使用的所有字符都列出來,并給每一個字符一個唯一特定數值。
  Unicode的最初目標,是用1個16位的編碼來為超過65000字符提供映射。但這還不夠,它不能覆蓋全部歷史上的文字,也不能解決傳輸的問題 (implantation head-ache’s),尤其在那些基于網絡的應用中。已有的軟件必須做大量的工作來程序16位的數據。
  因此,Unicode用一些基本的保留字符制定了三套編碼方式。它們分別是UTF-8,UTF-16和UTF-32。正如名字所示,在UTF-8中, 字符是以8位序列來編碼的,用一個或幾個字節來表示一個字符。這種方式的最大好處,是UTF-8保留了ASCII字符的編碼做為它的一部分,例如,在 UTF-8和ASCII中,“A”的編碼都是0x41.
  UTF-16和UTF-32分別是Unicode的16位和32位編碼方式。考慮到最初的目的,通常說的Unicode就是指UTF-16。在討論Unicode時,搞清楚哪種編碼方式非常重要。

#7.UTF-8

Unicode Transformation Format-8bit,允許含BOM,但通常不含BOM。是用以解決國際上字符的一種多字節編碼,它對英文使用8位(即一個字節),中文使用24為(三 個字節)來編碼。UTF-8包含全世界所有國家需要用到的字符,是國際編碼,通用性強。UTF-8編碼的文字可以在各國支持UTF8字符集的瀏覽器上顯 示。如,如果是UTF8編碼,則在外國人的英文IE上也能顯示中文,他們無需下載IE的中文語言支持包。

#8.總結

GBK的文字編碼是用雙字節來表示的,即不論中、英文字符均使用雙字節來表示,為了區分中文,將其最高位都設定成1。GBK包含全部中文字符,是國家編碼,通用性比UTF8差,不過UTF8占用的數據庫比GBD大。

GBK、GB2312等與UTF8之間都必須通過Unicode編碼才能相互轉換:

GBK、GB2312--Unicode--UTF8

UTF8--Unicode--GBK、GB2312

對于一個網站、論壇來說,如果英文字符較多,則建議使用UTF-8節省空間。不過現在很多論壇的插件一般只支持GBK。 unicode是字符集,ASCII、GB2312、GBK、GB18030既是字符集也是編碼方式,UTF-8只是編碼方式。

ISO-8859-1:單字節編碼,不能顯示中文;

GB2312/GBK:專門表示漢字,雙字節編碼,

gbk表示簡體字和繁體字,gb2312只能表示簡體字

unicode:最統一的編碼,可以用來表示所有語言的字符,而且是定長雙字節編碼,不兼容那iso-8859-1,也不兼容任何編碼。

Java中常用的編碼轉換
1)getBytes(charset):將字符串以字節方式表示,注意字符串在java內存中總是按unicode編碼存儲;

2)new String(charset):將字節數組按照charset編碼進行組合識別,最后轉成unicode存儲;

Java中注意問題

1)request請求默認的是編碼是iso-8859-1

2)iso-8859-1是java網絡傳輸使用的標準字符集

《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的字符集和字符编码的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 亚洲av成人精品日韩在线播放 | 精品人妻无码一区二区三区蜜桃一 | 欧美成人免费观看 | 免费观看亚洲 | 伊人久久国产精品 | 少妇床戏av| 绝顶高潮videos合集 | 伊人情人综合网 | 黄色片网站大全 | 一区二区日韩欧美 | 成人av综合 | 欧美日韩国产亚洲一区 | 四虎影像 | 欧美亚洲激情视频 | 国产伦精品一区二区三区视频1 | 99久久99久久精品国产片果冰 | 色悠悠国产精品 | 777奇米色| va婷婷在线免费观看 | 激情福利网 | 97夜色| 少妇一级淫免费播放 | 久久人妻少妇嫩草av无码专区 | 亚洲产国偷v产偷v自拍涩爱 | 青青草五月天 | 丰满饥渴老女人hd | 欧美精品亚洲 | 国产免费av电影 | 欧美性色网站 | 亚洲自拍偷拍av | 亚州av综合色区无码一区 | 日本少妇bbwbbw精品 | 国产无码精品视频 | 亚洲欧美日本一区二区 | 天堂8中文在线 | 成人羞羞免费 | 国产精品久久久久久久久久久久午夜片 | 乱xxxxx普通话对白 | 亚洲影视一区二区三区 | 在线一区二区视频 | 国产精品久久久久久久久免费看 | 免费国产在线视频 | 亚洲二区在线播放视频 | 日本大尺度做爰呻吟 | 青青草国产在线观看 | 牛牛在线 | 美女四肢被绑在床扒衣 | 夜夜操狠狠干 | 99精品人妻少妇一区二区 | 韩国成人免费视频 | 2021狠狠操| 91快射| 日日躁夜夜躁aaaabbbb | 成人爱爱免费视频 | 成人教育av在线 | 小香蕉av| 欧美刺激性大交 | 国产一级做a爰片久久毛片男 | 国产欧美日韩在线 | 韩日视频 | 亚洲成人av电影 | 亚洲第一页视频 | 人妻熟人中文字幕一区二区 | 精品国产乱码一区二区三 | av老司机在线播放 | 久久久国产精品人人片 | 香蕉影院在线观看 | 久久青青草原亚洲av无码麻豆 | 国产偷人爽久久久久久老妇app | 国产精品水嫩水嫩 | 少妇高潮一区二区三区四区 | 男人靠女人免费视频网站 | 性欧美bbw | 中文字幕11页中文字幕11页 | 亚洲视频精品一区 | 思思99精品视频在线观看 | 人妻无码一区二区三区免费 | 夜夜草av | 亚洲国产精品福利 | 秋霞成人午夜鲁丝一区二区三区 | 国产日韩欧美一区二区东京热 | 免费性网站 | 97综合 | 最新av免费观看 | 亚洲+小说+欧美+激情+另类 | 国产一区二区av在线 | 成人网在线视频 | 国产福利免费 | 三级三级久久三级久久 | 特大黑人巨交吊性xx | 伊伊成人| 飘花影院伦理片 | 午夜电影你懂的 | 国产精品毛片久久久久久久 | 美日韩黄色 | 大奶子在线观看 | 黄av网| 国产精品久久午夜夜伦鲁鲁 | 国产成人在线一区二区 |