C语言编程处理字符串,拼音字母(如é)占多少个字节

这个字符不属于 ASCII ,严格来说将它列于 ASCII 表是错的。具体长度取决于编码。GB18030 和 UTF-8 中是 2 字节( 2 个编码单元)。UTF-16 中是 2 个字节( 1 个编码单元)。UTF-32 中是 4 个字节( 1 个编码单元)。窄字符串字面量用的是多字节字符编码( UTF-8 等),在较常用多字节字符编码中, é 都可视为 2 个字节。(有时可能要注意 \\u0065\\u0301看起来和 é 一样)至于和汉字的区别:每个字符读进来后都要转换成某种内部数值表示,譬如 code point 的值。 é 对应的数值不在汉字的范围中。
■网友

C语言编程处理字符串,拼音字母(如é)占多少个字节
【C语言编程处理字符串,拼音字母(如é)占多少个字节】

我知道的肯定是假的ASCII表

■网友
题主要先理解一下编码知识,以及”字符“和”字节“的概念
你所看到的“é对应码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语言没关系,和什么操作系统也没关系,属于二进制编码标准的范畴。ASCII要求用8bit来保存字符,并要求最高位必须是0,这是很聪明的,后来的编码集因而能够容易地对其兼容。比如utf8,遇到最高位为0的字节就理解为“这个字节=一个ASCII字符”,遇到最高位为1的字节就理解为“这个字节和后面的若干个字节=一个unicode字符”。谭浩强的书中所录应为“ASCII扩展字符集”。一个8bit字节的256种表达它用掉了255个,理论上虽然也能进一步扩展,但冗余太大了,所以就被抛弃了。
■网友
非ascii符号为16位,即两个字节。GB两千标准规定,这两个字节都是1开头的,即1xxx xxxx 1xxx xxxx,而ascii码为0开头的,1字节。所以,每个汉字都是由两个大于127的char组成。其他全角字符也是格式。GBK标准增加了一些字符,它的格式是:1xxx xxxx 0xxx xxxx,即允许后面的字节是0开头;GB一万八标准允许使用4字节的字符。为了程序的严谨性,最好也考虑这些情况。utf-8的汉字是3个字节,格式为:1110xxxx10xxxxxx10xxxxxx


    推荐阅读