程序员 · 高频练习

字符串“A中”有几个字符,占多少个UTF-8字节?

初级 单选题 第 1129 题 较难 程序员UTF-8Unicode字符编码字节长度
题目

按Unicode码点统计字符串“A中”的字符个数,并按UTF-8编码计算其字节长度,正确的是()。

A 2个字符,2个字节
B 4个字符,4个字节
C 2个字符,4个字节
D 4个字符,2个字节
题目类型:原创高频练习题 用途:用于帮助理解程序员相关考点和答案解析,不等同于官方真题。
正确答案
C
答案解析

按题目明确的Unicode码点口径,“A”和“中”各算一个,共2个字符。UTF-8中ASCII字母A占1字节,汉字“中”对应的码点通常编码为3字节,所以总长度是4字节。字符个数回答“有几个文字单位”,字节长度回答“编码后占多少存储空间”,两者不能直接画等号。

选项分析

A

错误。把一个字符固定当成一个字节,只适用于部分单字节编码场景。

B

错误。4是编码后的字节总数,不是Unicode码点数量。

C

正确。两个码点,UTF-8下分别占1字节和3字节。

D

错误。字符数和字节数都颠倒了。

本题为什么容易错

初学者常见的误区是看到字符串长度就默认等于字节长度。实际上很多语言的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字节;字符数量与编码后的字节长度属于不同概念。