C語言程式設計處理字串,拼音字母 如 佔多少個位元組?

時間 2021-06-06 18:20:00

1樓:暮無井見鈴

這個字元不屬於 ASCII ,嚴格來說將它列於 ASCII 表是錯的。

具體長度取決於編碼。

GB18030 和 UTF-8 中是 2 位元組( 2 個編碼單元)。

UTF-16 中是 2 個位元組( 1 個編碼單元)。

UTF-32 中是 4 個位元組( 1 個編碼單元)。

窄字串字面量用的是多位元組字元編碼( UTF-8 等),在較常用多位元組字元編碼中, é 都可視為 2 個位元組。

(有時可能要注意 \u0065\u0301看起來和 é 一樣)至於和漢字的區別:每個字元讀進來後都要轉換成某種內部數值表示,譬如 code point 的值。 é 對應的數值不在漢字的範圍中。

2樓:冒泡

題主要先理解一下編碼知識,以及」字元「和」位元組「的概念你所看到的「é對應碼130」其實並不是「拼音字母」,而是西歐一些國家的拉丁字母,latin-1的字符集和編碼剛好就是這個0到255(ascii的集合嚴格說是0到126,不包括後半部分),在拉丁編碼下,這個字元當然是佔乙個位元組了

漢字表示使用的是另外的編碼,比如用gbk的話,非ascii的漢字、符號什麼的都是2位元組,其中可能也包括你說的「拼音字母」,可能也包括拉丁字母吧,沒去考證,但理論上是可以包括的,因為gbk編碼下,這些「字元」的含義一樣,但是表現上是用雙位元組了

而位元組130在gbk中當然就不是表示字元é,而是乙個不完整的字元,或者說是某個字元的組成部分,你可以這麼理解:假如你的「位元組集」是「abc」三個位元組,但是你想表示「abcd」四個字元,那這仨位元組就不能直接表示abc三個字元了,可以用「ca」雙位元組表示「d「字元,然後用」cc」來表示c,a和b的表示不變,這樣就擴充套件了,相容ascii的編碼,基本都這麼搞的

C語言字串長度函式?

C語言答疑課堂 題主的問題有兩個地方需要回答 1.為什麼寫 c 100 會報錯?你看啊,陣列c定義的時候指定大小是100,這可不是意味著從1 100,而是0 99,C語言數字下標是從0開始的。對於我們來說,是不是有點不習慣?c 100 意味著第101個元素,這個元素並不在陣列裡,鬼才知道你是個什麼東...

c語言怎麼從字串中提取自己想要的字元?

如果僅限英文本母數字等鍵盤上打的出的符號,那問題在於 你想要 的字元是啥,怎麼定義想要 滿足什麼條件 條件複雜可能還要用到正規表示式,甚至自己寫parser 坑是無窮無盡的,一切取決於你想要啥 如果包含中文等等世界各國語言的字元,還需要去學習 字元編碼 utf 8 gbk utf 16le utf ...

C語言中,字串常量為什麼只能給字元陣列初始化,而不能通過指標賦值

程佳 陣列是指標常量,常量不能賦值。字串在c語言裡不是原生資料型別,就是乙個內容非0結尾為0的位元組陣列。所以對字串的操作要使用string.h裡那些庫函式。 神念的經 想啥呢,一旦定義成了靜態陣列,首元素位址就是定死的。想改位址?門都沒有。指標賦值?那是改指向的位址,不是改指向的內容。strcpy...