碼點和代碼單元
結果是3 108
offsetByCodePoints(1,2);//返回從1處開始來的第源2個Code Point的位置
代碼點(codepoint):是指與一個編碼表中的某個字元對應的代碼值。
也就是從下標1開始的第2個代碼點的位置,那不就是3么.
codePointAt(index); //獲取第index位置的Code Point.返回類型是對應字元的ascii.
那就是獲取第3位的代碼點也就是l.而l對應的ascii碼就是108
㈡ java什麼是代碼點和代碼單元
說白了一個代碼點就是一個Unicode字元。代碼單元就是代碼點的集合。
字元視圖
要了解字元集標准,您必須能區分三種不同的字元視圖:
字元集(字元的抽象列表)。
作為帶標量值的「代碼點」的字元。
作為編碼數據的字元。
字元集(字元的抽象列表)
字元集是各種文字(包括拉丁文、西里爾文、中文、朝鮮語、日語、希伯來語和阿拉伯語)中所包含的字元的一個抽象列表,由一百多萬個字元組成。字元集還包括其他符號,例如音符。
Unicode 和 GB18030 標准都具有字元集。當某個標准添加了新字元時,為了保持對等,另一個標准也將添加這些字元。
作為帶標量值的「代碼點」的字元
注意 這第二個字元視圖只適用於 Unicode,而不適用於 GB18030。
字元集中的每個字元都被分配到一個「代碼點」。每個代碼點都有一個特定的數值,稱為標量值。該標量值通常用十六進製表示。
代碼點存在於「代碼空間」中。代碼空間由許多標量值組成,這些值被劃分在兩個平面中:
基本多語種平面(64k 大小)。
在 Unicode 中,此下平面中的值的十六進製表示位於 U+0000 到 U+FFFF 的范圍中。
輔助多語種平面(16 個 64k 大小的附加節)。
在 Unicode 中,此上平面中的值的十六進製表示位於 U+10000 到 U+10FFFF 的范圍中。
所有可能的標量值的完整代碼空間的大小為 17 * 64k(1,088,000 個可能值)。
作為編碼數據的字元
每個編碼形式將字元從字元集轉換為編碼數據。
在 GB18030 中,編碼數據直接從字元集派生:標量值(作為字元集和編碼數據之間的媒介)的概念只適用於 Unicode。
在 Unicode 中,通過向標量值應用某個演算法來派生編碼數據。
Unicode 定義了三種字元編碼形式:
UTF-8
UTF-16
UTF-32
代碼點和代碼單元
在每種編碼形式中,代碼點被映射到一個或多個代碼單元。
注意 有關代碼點的概述,請參見上一節字元視圖。
「代碼單元」是各個編碼形式中的單個單元。代碼單元的大小等效於特定編碼的位數測量單位:
UTF-8 中的代碼單元由 8 位組成。
UTF-16 中的代碼單元由 16 位組成。
UTF-32 中的代碼單元由 32 位組成。
GB18030 中的代碼單元由 8 位組成。
每個代碼點中的代碼單元數
映射到代碼點所需的代碼單元數根據編碼形式而有所不同:
UTF-8
在 UTF-8 中,因為代碼單元較小的緣故,每個代碼點常常被映射到多個代碼單元。代碼點將被映射到一個、兩個、三個或四個代碼單元。
UTF-16
UTF-16 的代碼單元大小是 8 位代碼單元的兩倍。所以,標量值小於 U+10000 的代碼點被編碼到單個代碼單元中。
對於標量值大於或等於 U+10000 的代碼點,每個代碼點需要兩個代碼單元。在 UTF-16 中,這些代碼單元對有一個獨特的術語:「Unicode 代理對」。
注意 下面對 Unicode 代理對的支持進行了討論。
UTF-32
UTF-32 中使用的 32 位代碼單元足夠大,每個代碼點都可編碼為單個代碼單元。
GB18030
在 GB18030 中,因為代碼單元較小的緣故,每個代碼點常常被映射到多個代碼單元。代碼點將被映射到一個、兩個或四個代碼單元。
對 Unicode 代理對的支持
某些受 Unicode 支持的文字包含代碼點的標量值大於或等於 U+10000 的字元。在 UTF-16 中,通過使用代理對來對這些代碼點進行編碼。
正確處理 Unicode 代理對非常重要。例如,當您在使用 UTF-16 編碼的應用程序中處理文本時,如果要添加、刪除或選擇字元以進行剪切、復制或粘貼操作,文本游標必須將每個代碼點作為單個文本字元導航。
㈢ java中的代碼點和代碼單元分別都是什麼誰能詳細解釋
說白了一個代碼點就是一個Unicode字元。代碼單元就是代碼點的集合。
字元視圖
要了解字元集標准,您必須能區分三種不同的字元視圖:
字元集(字元的抽象列表)。
作為帶標量值的「代碼點」的字元。
作為編碼數據的字元。
字元集(字元的抽象列表)
字元集是各種文字(包括拉丁文、西里爾文、中文、朝鮮語、日語、希伯來語和阿拉伯語)中所包含的字元的一個抽象列表,由一百多萬個字元組成。字元集還包括其他符號,例如音符。
Unicode 和 GB18030 標准都具有字元集。當某個標准添加了新字元時,為了保持對等,另一個標准也將添加這些字元。
作為帶標量值的「代碼點」的字元
注意 這第二個字元視圖只適用於 Unicode,而不適用於 GB18030。
字元集中的每個字元都被分配到一個「代碼點」。每個代碼點都有一個特定的數值,稱為標量值。該標量值通常用十六進製表示。
代碼點存在於「代碼空間」中。代碼空間由許多標量值組成,這些值被劃分在兩個平面中:
基本多語種平面(64k 大小)。
在 Unicode 中,此下平面中的值的十六進製表示位於 U+0000 到 U+FFFF 的范圍中。
輔助多語種平面(16 個 64k 大小的附加節)。
在 Unicode 中,此上平面中的值的十六進製表示位於 U+10000 到 U+10FFFF 的范圍中。
所有可能的標量值的完整代碼空間的大小為 17 * 64k(1,088,000 個可能值)。
作為編碼數據的字元
每個編碼形式將字元從字元集轉換為編碼數據。
在 GB18030 中,編碼數據直接從字元集派生:標量值(作為字元集和編碼數據之間的媒介)的概念只適用於 Unicode。
在 Unicode 中,通過向標量值應用某個演算法來派生編碼數據。
Unicode 定義了三種字元編碼形式:
UTF-8
UTF-16
UTF-32
代碼點和代碼單元
在每種編碼形式中,代碼點被映射到一個或多個代碼單元。
注意 有關代碼點的概述,請參見上一節字元視圖。
「代碼單元」是各個編碼形式中的單個單元。代碼單元的大小等效於特定編碼的位數測量單位:
UTF-8 中的代碼單元由 8 位組成。
UTF-16 中的代碼單元由 16 位組成。
UTF-32 中的代碼單元由 32 位組成。
GB18030 中的代碼單元由 8 位組成。
每個代碼點中的代碼單元數
映射到代碼點所需的代碼單元數根據編碼形式而有所不同:
UTF-8
在 UTF-8 中,因為代碼單元較小的緣故,每個代碼點常常被映射到多個代碼單元。代碼點將被映射到一個、兩個、三個或四個代碼單元。
UTF-16
UTF-16 的代碼單元大小是 8 位代碼單元的兩倍。所以,標量值小於 U+10000 的代碼點被編碼到單個代碼單元中。
對於標量值大於或等於 U+10000 的代碼點,每個代碼點需要兩個代碼單元。在 UTF-16 中,這些代碼單元對有一個獨特的術語:「Unicode 代理對」。
注意 下面對 Unicode 代理對的支持進行了討論。
UTF-32
UTF-32 中使用的 32 位代碼單元足夠大,每個代碼點都可編碼為單個代碼單元。
GB18030
在 GB18030 中,因為代碼單元較小的緣故,每個代碼點常常被映射到多個代碼單元。代碼點將被映射到一個、兩個或四個代碼單元。
對 Unicode 代理對的支持
某些受 Unicode 支持的文字包含代碼點的標量值大於或等於 U+10000 的字元。在 UTF-16 中,通過使用代理對來對這些代碼點進行編碼。
正確處理 Unicode 代理對非常重要。例如,當您在使用 UTF-16 編碼的應用程序中處理文本時,如果要添加、刪除或選擇字元以進行剪切、復制或粘貼操作,文本游標必須將每個代碼點作為單個文本字元導航。
㈣ 關於Java核心技術書中的代碼點和代碼單元是怎麼理解的呢
這些抄應該是從Unicode標准而襲來的術語,Unicode標準的核心是一個編碼字元集,它為每一個字元分配一個唯一數字。Unicode標准始終使用16進制數字,並且在書寫時在前面加上U+,如字元「A」的編碼為「U+0041」。
代碼點是指可用於編碼字元集的數字。編碼字元集定義一個有效的代碼點范圍,但是並不一定將字元分配給所有這些代碼點。有效的Unicode代碼點范圍是U+0000至U+10FFFF。Unicode4.0將字元分配給一百多萬個代碼點中的96382個代碼點。
代碼單元可以理解為字元編碼的一個基本單元,最常用的代碼單元是位元組(即8位),但是16位和32位整數也可以用於內部處理。
就Unicode標准來說,它的編碼字元集有三種編碼方案:UTF-32、UTF-16、UTF-8。UTF-32使用32位的代碼單元表示一個Unicode代碼點,UTF-16使用一個或兩個16位的代碼單元的序列對Unicode代碼點進行編碼,UTF-8 使用1至4個位元組的序列對Unicode代碼點進行編碼。