按Unicode码点统计字符串“A中”的字符个数,并按UTF-8编码计算其字节长度,正确的是()。
按题目明确的Unicode码点口径,“A”和“中”各算一个,共2个字符。UTF-8中ASCII字母A占1字节,汉字“中”对应的码点通常编码为3字节,所以总长度是4字节。字符个数回答“有几个文字单位”,字节长度回答“编码后占多少存储空间”,两者不能直接画等号。
选项分析
错误。把一个字符固定当成一个字节,只适用于部分单字节编码场景。
错误。4是编码后的字节总数,不是Unicode码点数量。
正确。两个码点,UTF-8下分别占1字节和3字节。
错误。字符数和字节数都颠倒了。
本题为什么容易错
初学者常见的误区是看到字符串长度就默认等于字节长度。实际上很多语言的length还可能统计UTF-16代码单元或字节,必须结合语言API和编码说明判断。
简短答案
字符串“A中”有几个字符,占多少个UTF-8字节,正确答案是 C(2个字符,4个字节)。按题目明确的Unicode码点口径,“A”和“中”各算一个,共2个字符。UTF-8中ASCII字母A占1字节,汉字“中”对应的码点通常编码为3字节,所以总长度是4字节。字符个数回答“有几个文字单位”,字节长度回答“编码后占多少存储空间”,两者不能直接画等号。
易混淆概念对比表
| 概念 | 本题判断 | 区别要点 | 记忆提示 |
|---|---|---|---|
| 2个字符,2个字节 | 本题干扰项 | 错误。把一个字符固定当成一个字节,只适用于部分单字节编码场景。 | 看到该词不要急着选,先判断是否真正解决题干问题 |
| 4个字符,4个字节 | 本题干扰项 | 错误。4是编码后的字节总数,不是Unicode码点数量。 | 看到该词不要急着选,先判断是否真正解决题干问题 |
| 2个字符,4个字节 | 本题正确答案 | 正确。两个码点,UTF-8下分别占1字节和3字节。 | 看到题干核心场景时优先联想到它 |
| 4个字符,2个字节 | 本题干扰项 | 错误。字符数和字节数都颠倒了。 | 看到该词不要急着选,先判断是否真正解决题干问题 |
本题易混淆选项怎么区分
- 2个字符,2个字节:错误。把一个字符固定当成一个字节,只适用于部分单字节编码场景。
- 4个字符,4个字节:错误。4是编码后的字节总数,不是Unicode码点数量。
- 4个字符,2个字节:错误。字符数和字节数都颠倒了。
知识点详解
UTF-8是变长编码,ASCII范围码点用1字节表示,常见汉字通常用3字节表示,更高码点可能用4字节。Unicode定义字符及码点,UTF-8负责把码点编码成字节序列。
备考速记
字符是内容单位,字节是编码后的搬运单位。
UTF-8 在字节长度场景中的作用
网络协议字段若限制的是字节数,直接用界面上看到的字符数做校验可能越界;数据库列、文件大小和消息长度也应确认限制单位及实际编码。
同类题怎么考
- 计算中英文混合字符串的UTF-8字节长度。
- 辨别字符、码点、代码单元和字节的不同含义。
UTF-8 在程序员软考中的考法
看见“几个字符、多少字节”就分两步算。题目没有说明编码或统计口径时,不要自行给出绝对结论。
解题思路
老师做这类题通常先拆字符:A是ASCII范围,1字节;“中”超出ASCII,UTF-8编码为3字节。字符数是2,字节数是1+3=4,因此选C。
考点定位
先看题目规定的字符统计口径,再按目标编码计算字节数。本题限定为Unicode码点,不讨论由多个码点组合成一个可见字形的情况。
易错提醒
- 未注明编码就断言一个汉字永远占3字节。
- 把UTF-8字节长度和数据库字符长度混为一谈。
- 忽略组合字符、表情符号可能包含多个码点的复杂边界。
备考提示
- 用A、中和一个表情分别测试语言中的字符数、码点数和字节数API。
- 做编码题先写统计口径,再写编码规则,答案会稳很多。
你可能还想了解
- UTF-8一个汉字占几个字节?
- 字符串字符数为什么不等于字节数?
- A中在UTF-8下占多少字节?
本文小结
字符串“A中”按Unicode码点计有2个字符,按UTF-8编码占4字节;字符数量与编码后的字节长度属于不同概念。