最全面最詳細的字元集講解來了!

来源:https://www.cnblogs.com/lisong0626/p/18312186
-Advertisement-
Play Games

1.字元集 在電腦科學中,信息的存儲和處理都是基於二進位數的,這是因為二進位數在電腦硬體層面上實現起來最為簡單和高效。二進位數由兩個基本元素組成:0和1,這兩個元素可以通過電子器件(如晶體管)的開關狀態來輕鬆表示。而我們在屏幕上看到的數字、英文、標點符號、漢字等字元是二進位數轉換之後的結果。按照 ...


1.字元集

在電腦科學中,信息的存儲和處理都是基於二進位數的,這是因為二進位數在電腦硬體層面上實現起來最為簡單和高效。二進位數由兩個基本元素組成:0和1,這兩個元素可以通過電子器件(如晶體管)的開關狀態來輕鬆表示。而我們在屏幕上看到的數字、英文、標點符號、漢字等字元是二進位數轉換之後的結果。按照某種規則,將字元存儲到電腦中,稱為編碼 。反之,將存儲在電腦中的二進位數按照某種規則解析顯示出來,稱為解碼

  • 字元編碼(Character Encoding) : 就是一套自然語言的字元與二進位數之間的對應規則。

  • 字元集:也叫編碼表。是一個系統支持的所有字元的集合,包括各國家文字、標點符號、圖形符號、數字等。

2.常見的字元編碼

2.1 ASCII碼(American Standard Code for Information Interchange,美國信息交換標準代碼)

  • 1961年,美國制定了一套字元編碼,對英語字元與二進位位之間的關係,做了統一規定。這被稱為ASCII碼。

  • ASCII碼用於顯示現代英語,主要包括控制字元(回車鍵、退格、換行鍵等)和可顯示字元(英文大小寫字元、阿拉伯數字和西文符號)。

  • 基本的ASCII字元集,使用7位(bits)表示一個字元(最前面的1位統一規定為0),共128個字元。比如:空格“SPACE”是32(二進位00100000),大寫的字母A是65(二進位01000001)。

  • 缺點:不能表示所有字元。

ASCII-1

ASCII-2

2.2 ISO-8859-1字元集

ISO-8859-1字元集,正式編號為ISO/IEC 8859-1:1998,又稱Latin-1或“西歐語言”,是國際標準化組織內ISO/IEC 8859系列字元集的第一個8位字元集,相容ASCII編碼。以下是對ISO-8859-1字元集的詳細概述:
一、基本介紹

  • 名稱:ISO-8859-1,又稱Latin-1或“西歐語言”。
  • 正式編號:ISO/IEC 8859-1:1998。
  • 基礎:以ASCII為基礎,擴展了ASCII字元集。

二、特點

  • 字元範圍:ISO-8859-1字元集總共包含256個字元(即8位二進位數所能表示的範圍)。

  • 字元分類:

    • 較低部分(從1到127之間的代碼):這部分是最初的ASCII字元集,包括0-9的數字、大寫和小寫英文字母表(A-Z, a-z),以及一些特殊字元(如標點符號、控制字元等)。

    • 較高部分(從160到255之間的代碼):這部分包含了西歐國家使用的字元和一些被廣泛使用的特殊字元,它們全都有實體名稱。這些字元主要是為了支持使用附加符號的拉丁字母語言。

三、支持的語言
ISO-8859-1字元集支持多種西歐語言,包括但不限於:

    阿爾巴尼亞語
    巴斯克語
    布列塔尼語
    加泰羅尼亞語
    丹麥語
    荷蘭語
    法羅語
    弗里西語
    加利西亞語
    德語
    格陵蘭語
    冰島語
    愛爾蘭蓋爾語
    義大利語
    拉丁語
    盧森堡語
    挪威語
    葡萄牙語
    里托羅曼斯語
    蘇格蘭蓋爾語
    西班牙語
    瑞典語

此外,雖然英語沒有重音字母,但仍會標明為ISO/IEC 8859-1編碼。同時,歐洲以外的部分語言,如南非荷蘭語、斯瓦希里語、印尼語及馬來語、菲律賓他加洛語等,也可使用ISO/IEC 8859-1編碼。
四、歷史與替代

  • 歷史版本:ISO-8859-1字元集曾推出過ISO 8859-1:1987版,後更新為ISO/IEC 8859-1:1998版。

  • 替代情況:儘管ISO-8859-1廣泛用於西歐語言,但由於其字元集的限制(如不支持法語中的œ、Œ、Ÿ和芬蘭語中的Š、š、Ž、ž等字元),它於1998年被ISO/IEC 8859-15所取代。ISO/IEC 8859-15在ISO-8859-1的基礎上增加了這些字元,並同時加入了歐元符號。

五、應用與影響

  • 瀏覽器預設字元集:ISO-8859-1是大多數瀏覽器預設的字元集之一,用於在網頁上正確顯示西歐語言的文本。
  • 相容性:由於其廣泛的應用和歷史地位,ISO-8859-1字元集在許多系統和應用程式中仍然保持著良好的相容性。

2.3 GBxx的字元集

GBxx字元集是中國為了顯示和處理中文字元而制定的一系列字元集標準,其中“GB”代表“國家標準”(Guobiao)的縮寫。這些字元集涵蓋了從基本的漢字編碼到更廣泛字元支持的多個版本。

以下是對GBxx字元集的一些主要版本的詳細概述:

  • GB2312

    • 全稱:《信息交換用漢字編碼字元集·基本集》,又稱GB0,由中國國家標準總局發佈,1981年5月1日實施。

    • GB2312是中華人民共和國國家標準簡體中文字元集(簡體中文表),一個小於127的字元的意義與原來相同,即向下相容ASCII碼。但兩個大於127的字元連在一起時,就表示一個漢字,這樣大約可以組合了包含7000多個簡體漢字,此外數學符號、羅馬希臘的字母、日文的假名們都編進去了,這就是常說的"全形"字元,而原來在127號以下的那些符號就叫"半形"字元了。

    • 採用雙位元組編碼,每個漢字或符號由兩個位元組表示。第一個位元組稱為“高位位元組”,第二個位元組稱為“低位位元組”。

  • GBK 最常用的中文編碼

    • 全稱:《漢字內碼擴展規範(GBK)》1.0版,由中華人民共和國全國信息技術標準化技術委員會1995年制定。

    • GBK是對GB 2312的擴展,增加了對更多漢字和符號的支持,包括部分GB 2312未收錄的漢字、繁體字、日文假名等。GBK總計擁有23940個碼位,共收入21886個漢字和圖形符號。

    • 同樣採用雙位元組編碼,但編碼範圍更廣,總體編碼範圍為8140-FEFE

  • GB18030

    • 全稱:國家標準GB 18030-2005《信息技術 中文編碼字元集》,是中華人民共和國現時最新的內碼字集。

    • GB 18030是對GBK的進一步擴展,支持更多的字元,包括中國國內少數民族的文字、繁體漢字以及日韓漢字等。共收錄漢字70,244個,採用多位元組編碼,每個字可以由1個、2個或4個位元組組成。

    • 與GB 2312-1980完全相容,與GBK基本相容,並支持GB 13000及Unicode的全部統一漢字。

2.4 UniCode字元集

Unicode編碼,全稱Unicode標準(The Unicode Standard),也被稱為統一碼、標準萬國碼、單一碼等,是一種用於表示文本字元的標準編碼系統。Unicode將世界上所有的文字用2個位元組統一進行編碼,為每個字元設定唯一的二進位編碼,以滿足跨語言、跨平臺進行文本處理的要求。以下是Unicode編碼的詳細概述:

一、背景與目的

  • 背景:傳統的字元編碼方案,如ASCII碼,只能表示一種語言的字元,無法同時支持多種語言的字元,導致不同語言的字元無法混合出現在一個文本中。此外,不同國家和地區的字元編碼標準各異,也造成了字元顯示和處理的混亂。

  • 目的:Unicode編碼的目的是為每種語言中的每個字元設定一個統一且唯一的二進位編碼,以滿足跨語言、跨平臺進行文本轉換和處理的需求。

二、編碼特點

  • 唯一性:Unicode為每個字元分配了一個唯一的標識符,稱為“碼點”(Code Point),通常以十六進位數表示,首碼為“U+”。

  • 廣泛性:Unicode字元集包含了幾乎所有語言的字元,包括漢字、拉丁字母、數字、標點符號、符號等,以及特殊的控制字元。

  • 擴展性:Unicode字元集還在不斷擴展,每個新版本都會加入更多新的字元。截至當前時間(2024年),Unicode已經收錄了超過14萬個字元。

三、Unicode的局限性

  • 第一,英文字母只用一個位元組表示就夠了,如果用更多的位元組存儲是極大的浪費

  • 第二,如何才能區別Unicode和ASCII?電腦怎麼知道兩個位元組表示一個符號,而不是分別表示兩個符號呢?

  • 第三,如果和GBK等雙位元組編碼方式一樣,用最高位是1或0表示兩個位元組和一個位元組,就少了很多值無法用於表示字元,不夠表示所有字元

所以Unicode在很長一段時間內無法推廣,直到互聯網的出現,為解決Unicode如何在網路上傳輸的問題,於是面向傳輸的眾多UTF(UCS Transfer Format)標準出現。
具體來說,有三種編碼方案:UTF-8UTF-16UTF-32

四、編碼方式

  • Unicode是字元集,UTF-8、UTF-16、UTF-32是三種將數字轉換到程式數據的編碼方案。顧名思義,UTF-8就是每次8個位傳輸數據,而UTF-16就是每次16個位。其中,UTF-8 是在互聯網上使用最廣的一種 Unicode 的實現方式。

    • UTF-8:一種變長編碼方式,可以使用1到4個位元組表示Unicode字元集中的任何字元,並且相容ASCII編碼。

    • UTF-16:使用16位或32位(代理對)表示Unicode字元,根據位元組序的不同,可以分為UTF-16LE(小端序)和UTF-16BE(大端序)。

    • UTF-32:固定使用32位(4個位元組)表示Unicode字元,同樣根據位元組序的不同,可以分為UTF-32LE和UTF-32BE。

  • Unicode碼點:Unicode定義了字元集中每個字元的唯一碼點,如漢字“中”的Unicode碼點是U+4E2D。

  • 互聯網工程工作小組(IETF)要求所有互聯網協議都必須支持UTF-8編碼。所以,我們開發Web應用,也要使用UTF-8編碼。UTF-8 是一種變長的編碼方式。它可以使用 1-4 個位元組表示一個符號它使用一至四個位元組為每個字元編碼,編碼規則:

    1. 128個US-ASCII字元,只需一個位元組編碼。

    2. 拉丁文等字元,需要二個位元組編碼。

    3. 大部分常用字(含中文),使用三個位元組編碼。

    4. 其他極少使用的Unicode輔助字元,使用四位元組編碼。

  • 舉例:
    Unicode符號範圍 | UTF-8編碼方式

(十六進位)           | (二進位)

————————————————————|—–—–—–—–—–—–—–—–—–—–—–—–—–—–

0000 0000-0000 007F | 0xxxxxxx(相容原來的ASCII)

0000 0080-0000 07FF | 110xxxxx 10xxxxxx

0000 0800-0000 FFFF | 1110xxxx 10xxxxxx 10xxxxxx

0001 0000-0010 FFFF | 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx

註意

在中文操作系統上,ANSI(美國國家標準學會、AMERICAN NATIONAL STANDARDS INSTITUTE: ANSI)編碼即為GBK;在英文操作系統上,ANSI編碼即為ISO-8859-1。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 在一些報表模塊中,需要我們根據用戶操作的名稱,來動態根據人員姓名,更新報表的簽名圖片,也就是電子手寫簽名效果,本篇隨筆介紹一下使用FastReport報表動態更新人員簽名圖片。 ...
  • 一:背景 1. 講故事 前些天有位朋友找到我,說他的程式每次關閉時就會自動崩潰,一直找不到原因讓我幫忙看一下怎麼回事,這位朋友應該是第二次找我了,分析了下 dump 還是挺經典的,拿出來給大家分享一下吧。 二:WinDbg 分析 1. 為什麼會崩潰 找崩潰原因比較簡單,用 !analyze -v 命 ...
  • 以前,我看到一個朋友在對一個系統做初始化的時候,通過一組魔幻般的按鍵,調出來一個隱藏的系統設置界面,這個界面在常規的菜單或者工具欄是看不到的,因為它是一個後臺設置的關鍵界面,不公開,同時避免常規用戶的誤操作,它是作為一個超級管理員的入口功能,這個是很不錯的思路。其實Winform做這樣的處理也是很容... ...
  • 通過WPF的按鈕、文本輸入框實現了一個簡單的SpinBox數字輸入用戶組件並可以通過數據綁定數值和步長。本文中介紹了通過Xaml代碼實現自定義組件的佈局,依賴屬性的定義和使用等知識點。 ...
  • 摘要: 使用QT進行SCSI指令操作時遇到問題,0x28讀取正常,但0x2A寫入失敗,原因是系統對0x2A命令的寫入許可權控制嚴格。解決方法是通過FSCTL_LOCK_VOLUME實現獨占訪問,實現對USB設備的寫操作。 問題參考:https://blog.csdn.net/kifea/article ...
  • 痞子衡嵌入式半月刊: 第 105 期 這裡分享嵌入式領域有用有趣的項目/工具以及一些熱點新聞,農曆年分二十四節氣,希望在每個交節之日準時發佈一期。 本期刊是開源項目(GitHub: JayHeng/pzh-mcu-bi-weekly),歡迎提交 issue,投稿或推薦你知道的嵌入式那些事兒。 上期回 ...
  • 一、 Linux發行版本和虛擬機介紹 Linux系統的版本分為兩種,分別是: 內核版 和 發行版。 1) .內核版 由Linus Torvalds及其團隊開發、維護 免費、開源 負責控制硬體 2).發行版 基於Linux內核版進行擴展 由各個Linux廠商開發、維護 有收費版本和免費版本 我們使用L ...
  • 寫在前面 本隨筆是非常菜的菜雞寫的。如有問題請及時提出。 可以聯繫:[email protected] GitHhub:https://github.com/WindDevil (目前啥也沒有 設計方法 瞭解了特權級機制,實際上如果要設計一個應用程式就需要保證它符合U模式的要求,不要去訪問S模式下的 ...
一周排行
    -Advertisement-
    Play Games
  • 前言 微服務架構已經成為搭建高效、可擴展系統的關鍵技術之一,然而,現有許多微服務框架往往過於複雜,使得我們普通開發者難以快速上手並體驗到微服務帶了的便利。為瞭解決這一問題,於是作者精心打造了一款最接地氣的 .NET 微服務框架,幫助我們輕鬆構建和管理微服務應用。 本框架不僅支持 Consul 服務註 ...
  • 先看一下效果吧: 如果不會寫動畫或者懶得寫動畫,就直接交給Blend來做吧; 其實Blend操作起來很簡單,有點類似於在操作PS,我們只需要設置關鍵幀,滑鼠點來點去就可以了,Blend會自動幫我們生成我們想要的動畫效果. 第一步:要創建一個空的WPF項目 第二步:右鍵我們的項目,在最下方有一個,在B ...
  • Prism:框架介紹與安裝 什麼是Prism? Prism是一個用於在 WPF、Xamarin Form、Uno 平臺和 WinUI 中構建鬆散耦合、可維護和可測試的 XAML 應用程式框架 Github https://github.com/PrismLibrary/Prism NuGet htt ...
  • 在WPF中,屏幕上的所有內容,都是通過畫筆(Brush)畫上去的。如按鈕的背景色,邊框,文本框的前景和形狀填充。藉助畫筆,可以繪製頁面上的所有UI對象。不同畫筆具有不同類型的輸出( 如:某些畫筆使用純色繪製區域,其他畫筆使用漸變、圖案、圖像或繪圖)。 ...
  • 前言 嗨,大家好!推薦一個基於 .NET 8 的高併發微服務電商系統,涵蓋了商品、訂單、會員、服務、財務等50多種實用功能。 項目不僅使用了 .NET 8 的最新特性,還集成了AutoFac、DotLiquid、HangFire、Nlog、Jwt、LayUIAdmin、SqlSugar、MySQL、 ...
  • 本文主要介紹攝像頭(相機)如何採集數據,用於類似攝像頭本地顯示軟體,以及流媒體數據傳輸場景如傳屏、視訊會議等。 攝像頭採集有多種方案,如AForge.NET、WPFMediaKit、OpenCvSharp、EmguCv、DirectShow.NET、MediaCaptre(UWP),網上一些文章以及 ...
  • 前言 Seal-Report 是一款.NET 開源報表工具,擁有 1.4K Star。它提供了一個完整的框架,使用 C# 編寫,最新的版本採用的是 .NET 8.0 。 它能夠高效地從各種資料庫或 NoSQL 數據源生成日常報表,並支持執行複雜的報表任務。 其簡單易用的安裝過程和直觀的設計界面,我們 ...
  • 背景需求: 系統需要對接到XXX官方的API,但因此官方對接以及管理都十分嚴格。而本人部門的系統中包含諸多子系統,系統間為了穩定,程式間多數固定Token+特殊驗證進行調用,且後期還要提供給其他兄弟部門系統共同調用。 原則上:每套系統都必須單獨接入到官方,但官方的接入複雜,還要官方指定機構認證的證書 ...
  • 本文介紹下電腦設備關機的情況下如何通過網路喚醒設備,之前電源S狀態 電腦Power電源狀態- 唐宋元明清2188 - 博客園 (cnblogs.com) 有介紹過遠程喚醒設備,後面這倆天瞭解多了點所以單獨加個隨筆 設備關機的情況下,使用網路喚醒的前提條件: 1. 被喚醒設備需要支持這WakeOnL ...
  • 前言 大家好,推薦一個.NET 8.0 為核心,結合前端 Vue 框架,實現了前後端完全分離的設計理念。它不僅提供了強大的基礎功能支持,如許可權管理、代碼生成器等,還通過採用主流技術和最佳實踐,顯著降低了開發難度,加快了項目交付速度。 如果你需要一個高效的開發解決方案,本框架能幫助大家輕鬆應對挑戰,實 ...