C语言编程处理字符串,拼音字母(如é)占多少个字节
这个字符不属于 ASCII ,严格来说将它列于 ASCII 表是错的。具体长度取决于编码。GB18030 和 UTF-8 中是 2 字节( 2 个编码单元)。UTF-16 中是 2 个字节( 1 个编码单元)。UTF-32 中是 4 个字节( 1 个编码单元)。窄字符串字面量用的是多字节字符编码( UTF-8 等),在较常用多字节字符编码中, é 都可视为 2 个字节。(有时可能要注意 \\u0065\\u0301看起来和 é 一样)至于和汉字的区别:每个字符读进来后都要转换成某种内部数值表示,譬如 code point 的值。 é 对应的数值不在汉字的范围中。
■网友
【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
推荐阅读
- 济南垃圾处理单位“前分后混”将面临最高十万元罚款
- 汽车知识|捷达库存成灾,特价处理,4S店卖不动,大家都不差钱!
- 想要入门图像处理,应该从哪本书看起
- 学图像处理有哪些不错的书推荐
- 关于用phpfsocket 写Post, 模拟http 报文怎样写入要传输的处理数据
- 孩子|小孩发烧的处理方法有物理降温与药物退烧!但很多新手父母不会
- 在原码变补码时求反加一涉及最高位进位咋处理比如1.00000的补码是多少
- 广州白云警方通报巡逻车辆悬挂假牌视频:对有关人员依法依规进行处理
- 淘宝错判“虚假交易”后申诉也被驳回,客服态度蛮横,应当怎么样处理
- 杭州余杭警方通报“返乡公告”谣言处理结果:两人被行拘
