字数和字节不同
字数是人看到的字的个数,字节则是这段文字保存到计算机中所占的大小。同一个字,使用的字符编码(把文字转换为数字的规则)不同,字节数也会不同。英文字母和数字在几乎所有编码中都是 1 个字节,而韩文则视编码不同,可能是 2 个字节,也可能是 3 个字节。
UTF-8:当今的标准
UTF-8 是网页和大多数现代软件使用的编码。它根据 Unicode 编号(码位)的大小使用 1~4 个字节(RFC 3629)。
| 码位范围 | 字节 | 示例 |
|---|---|---|
| U+0000 ~ U+007F | 1 | 英文字母、数字、基本符号 |
| U+0080 ~ U+07FF | 2 | é、ñ、希腊字母、西里尔字母、阿拉伯字母 |
| U+0800 ~ U+FFFF | 3 | 韩文、汉字、假名 |
| U+10000 ~ U+10FFFF | 4 | 大多数表情符号、古文字 |
韩文完成型音节(가~힣,U+AC00~U+D7A3)全部位于第三个区间,所以在 UTF-8 中一个字占 3 个字节。例如“안녕하세요”(你好)是 5 个字、15 个字节。
UTF-16
JavaScript、Java 和 Windows 内部使用的 UTF-16,把大多数字符保存为 2 个字节,把 U+10000 以上的字符(如表情符号)保存为 4 个字节(代理对)。这就是 JavaScript 字符串长度会把表情符号算作 2 的原因。
EUC-KR:韩国的完成型编码
EUC-KR 是基于韩国工业标准 KS X 1001 的编码。英文字母和数字为 1 个字节,KS X 1001 中收录的字符为 2 个字节。KS X 1001 收录了常用韩文音节 2,350 个、汉字 4,888 个,以及假名、希腊字母、西里尔字母和各种符号。
问题在于,现代韩文的 11,172 个音节中只收录了 2,350 个。像“똠”“햏”“뷁”这样不在列表中的字,无法用基本 EUC-KR 的两个字节表示。标准附录中有一种使用 8 个字节的组合方式,但支持它的程序很少,通常会被替换为“?”或导致错误。
CP949:扩展完成型
CP949(微软的“统一型韩文代码”)扩展了 EUC-KR,把现代韩文 11,172 个音节全部以 2 个字节收录。由于它曾是 Windows 韩语版的默认代码页,因此在老旧的韩语文档和系统中广泛使用。“英文 1 字节、韩文 2 字节”的惯例大多源自这种编码。
字节很重要的场合
- 手机短信:韩国国内的短信服务通常把短信(SMS)标为 90 字节,并按每个韩文字 2 字节计算,约合 45 个韩文字。超出后会转为长信(LMS),资费可能不同,准确标准请查看所用服务的说明。
- 数据库字段:在 Oracle 的 VARCHAR2 等按字节计量长度的设置中,同样 20 个字,英文和韩文所占的大小不同。如果是 UTF-8 数据库,一个韩文字占 3 个字节。
- 公共与金融表格:与老旧系统对接的表格有时会以字节数限制输入框长度。
本工具的计算方式
UTF-8 字节数根据每个字符的码位精确计算。EUC-KR 和 CP949 则依据各编码的实际字符表,逐字检查能否用 2 个字节表示后计算。无法表示的字符(表情符号、不在列表中的韩文等)通常会被替换为 1 个字节的“?”,因此按 1 个字节计算,并单独显示这类字符的数量。在分题模式中把限制标准选为“字节(韩文 2)”时,将按 CP949 方式计数。
更新日期: 2026-09-23