<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      一文讀懂字符與編碼

      完整內容也可以在公眾號「非專業程序員Ping」查看

      一、字符/Character

      對用戶可見的“一個字符”,通常是我們在屏幕上看到的一個字母、數字、emoji 或組合字符。

      比如:a、é???????????

      二、字符編碼標準/字符集

      字符編碼標準定義的是如何將字符映射到唯一編碼,常見的字符編碼標準比如ASCIIUnicode、GBK

      2.1 ASCII

      ASCII(7位)定義了 128 個字符的唯一編碼,包括數字0到9、小寫字母a到z、大寫字母A到Z以及常用標點符號等。

      2.2 Unicode

      Unicode又叫萬國碼,目標是為所有字符定義唯一編碼(Code Point)。為了解決ASCII/GBK不能定義全部字符的問題。

      比如:

      a -> U+0061

      ?? -> U+1F468

      注意

      Unicode只負責分配碼位(Code Point),并不決定具體的存儲形式。

      Unicode的前 128 個碼點與ASCII相同。

      2.2.1 Code Point

      Code Point也叫碼位,Unicode中為每個字符分配的唯一編碼。

      一個字符可以對應一個或多個Code Point,比如:

      • aU+0061,對應 1 個Code Point
      • ???????????U+1F468 (??) + U+200D (ZWJ) + U+1F469 (??) + U+200D (ZWJ) + U+1F467 (??) + U+200D (ZWJ) + U+1F466 (??)對應 7 個Code Point
      • éU+00E9U+0065 + U+0301

      備注:

      在Unicode中,é實際上有兩種表示方式:

      單一字符表示法:即直接使用U+00E9這個單獨的Unicode碼位表示é

      組合字符表示法:使用U+0065(字母e)和U+0301(重音符號)兩個Unicode碼位來表示一個é字符。

      為什么會有這兩種表示法?

      歷史原因:Unicode設計時考慮到了不同語言的需求,許多語言(如法語、西班牙語等)使用帶有重音符號的字符,因此,Unicode同時支持這兩種表示方式。

      兼容性:一些舊的系統或字體可能只支持分解字符表示法,因此,Unicode也保留了這種組合字符的方式,以提高兼容性。

      2.2.2 Code Unit

      Code Unit也叫碼元(代碼單元),表示計算機中實際存儲Unicode的基本單位,取決于編碼方式。

      比如:

      • UTF-8Code Unit是 1 字節(8 Bit);比如:a在UTF-8編碼下占 1 個字節,表示為0x61。

      • UTF-16Code Unit是 2 字節(16 Bit);比如:a在UTF-16編碼下占 2 個字節,表示為0x0061。

      • UTF-32Code Unit是 4 字節(32 Bit);比如:a在UTF-32編碼下占 4 個字節,表示為0x00000061

      三、字符編碼方式

      字符編碼方式決定了字符如何存儲、傳輸和解碼;常見的編碼方式有:UTF-8、UTF-16、UTF-32等

      • UTF-8:可變長度,用 1 到 4 個字節來存儲 Unicode 字符;為了節省存儲資源。

      • UTF-16:可變長度,用 2 或 4 個字節存儲字符。

      • UTF-32:固定長度,每個字符始終使用 4 字節存儲。

      比如:

      é的Code Point是:U+0065 + U+0301

      當以UTF-32方式編碼時,每個Code Point未超過4字節,所以表示為:0x00000065,0x00000301

      當以UTF-16方式編碼時,每個Code Point未超過2字節,所以表示為:0x0065,0x0301

      當以UTF-8方式編碼時,0x0301值超過了128,需要按UTF-8格式拆分為0xCC,0x81,所以表示為:0x65,0xCC,0x81

      Q:UTF-8編碼為什么是按128做比較,按理說1字節(0xFF)表示的最大值是255?

      A:有兩個原因:一是為了與ASCII兼容,ASCII只支持了128個字符編碼,在UTF-8編碼中,前128位與ASCII編碼相同;二是UTF-8編碼中,會將第一個字節的高位部分用來標識這個字符的編碼長度,具體為:

      • 0xxxxxxx:表示 1 字節字符(ASCII 范圍)

      • 110xxxxx:表示 2 字節字符

      • 1110xxxx:表示 3 字節字符

      • 11110xxx:表示 4 字節字符
        在這里插入圖片描述

      歡迎關注同名公眾號:非專業程序員Ping

      posted on 2025-10-21 00:38  非專業程序員Ping  閱讀(129)  評論(0)    收藏  舉報

      導航

      主站蜘蛛池模板: 国产精品日韩中文字幕熟女| 国产精品国产自产拍在线| 精品免费看国产一区二区| 洪雅县| 久久中文字幕av第二页| 午夜高清福利在线观看| 久久人妻公开中文字幕| 欧美和黑人xxxx猛交视频| 无码国模国产在线观看免费| 免费无码黄动漫在线观看| 97久久久亚洲综合久久| 韩国福利片在线观看播放| 亚洲区1区3区4区中文字幕码| 在线 欧美 中文 亚洲 精品| 加勒比中文字幕无码一区| 最新国产精品拍自在线播放| 国产精品午夜av福利| 成人自拍小视频免费观看| 国产大片黄在线观看| 国产AV巨作丝袜秘书| 国产粉嫩美女一区二区三| 痉挛高潮喷水av无码免费| 久久亚洲av成人无码软件| 麻豆麻豆麻豆麻豆麻豆麻豆| 国产精品乱码久久久久久小说 | 亚洲区成人综合一区二区| 中文字幕av无码免费一区| 东至县| 亚洲男人的天堂久久香蕉| 国产精品一区二区黄色片| 亚洲色欲色欱WWW在线| 四虎国产精品成人免费久久| 日本一区二区精品色超碰| 国产亚洲精品久久77777| 日韩人妻无码一区二区三区99| 大厂| 国产精品美女一区二区三| 狠狠色综合播放一区二区| 无码专区视频精品老司机| 久久亚洲国产精品五月天| 被灌满精子的少妇视频|