指南 02

字节计算原理:UTF-8、EUC-KR、CP949

韩文是 2 字节还是 3 字节?本文说明不同字符编码下的字节计算方法,以及短信和数据库中需要注意的地方。

字数和字节不同

字数是人看到的字的个数,字节则是这段文字保存到计算机中所占的大小。同一个字,使用的字符编码(把文字转换为数字的规则)不同,字节数也会不同。英文字母和数字在几乎所有编码中都是 1 个字节,而韩文则视编码不同,可能是 2 个字节,也可能是 3 个字节。

UTF-8:当今的标准

UTF-8 是网页和大多数现代软件使用的编码。它根据 Unicode 编号(码位)的大小使用 1~4 个字节(RFC 3629)。

码位范围字节示例
U+0000 ~ U+007F1英文字母、数字、基本符号
U+0080 ~ U+07FF2é、ñ、希腊字母、西里尔字母、阿拉伯字母
U+0800 ~ U+FFFF3韩文、汉字、假名
U+10000 ~ U+10FFFF4大多数表情符号、古文字

韩文完成型音节(가~힣,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 字节”的惯例大多源自这种编码。

字节很重要的场合

本工具的计算方式

UTF-8 字节数根据每个字符的码位精确计算。EUC-KR 和 CP949 则依据各编码的实际字符表,逐字检查能否用 2 个字节表示后计算。无法表示的字符(表情符号、不在列表中的韩文等)通常会被替换为 1 个字节的“?”,因此按 1 个字节计算,并单独显示这类字符的数量。在分题模式中把限制标准选为“字节(韩文 2)”时,将按 CP949 方式计数。

更新日期: 2026-09-23

打开字数统计工具 →