UTF-8 是 Unicode 最常用的存储编码,用 1–4 个字节表示一个字符:ASCII 字符 1 字节,拉丁字母扩展 2 字节,常用汉字 3 字节,emoji 等 4 字节。下面重点说明长度与体积的估算公式。
UTF-8长度怎么计算
字节数 = 各字符字节数之和:ASCII 1、常用汉字 3、emoji 4。“123问”= 3 × 1 + 3 = 6 字节;“你好,世界”5 个字符都是 3 字节(全角逗号也是),共 15 字节。数据库 VARCHAR(n) 在 MySQL utf8mb4 中按字符计,但索引长度限制按字节计。
示例
输入:user@example.com
编码结果:75 73 65 72 40 65 78 61 6D 70 6C 65 2E 63 6F 6D
说明:按 UTF-8 共 16 字节。
与相关技术的区别
UTF-8 与 GBK:UTF-8 覆盖全部 Unicode,汉字 3 字节;GBK 只覆盖简繁汉字和部分符号,汉字 2 字节,但不能表示 emoji 和多数外文。UTF-8 与 UTF-16:UTF-16 中 BMP 字符 2 字节,适合内存中处理(Java、JavaScript、Windows 内部),但不兼容 ASCII。
常见报错
- UnicodeDecodeError: 'utf-8' codec can't decode byte 0xd6:文件实际是 GBK
- Incorrect string value: '\xF0\x9F\x98\x80'(MySQL):字段是 utf8,改为 utf8mb4
- 页面显示“锟斤拷”:GBK 与 UTF-8 来回错误转换,替换字符 EF BF BD 被按 GBK 显示
- PHP 输出前多了空白:文件带 BOM
本站的字符编码检测工具可以直接处理,计算在浏览器本地完成,适合快速核对结果。
常见问题
【UTF-8 和 utf8mb4 有什么区别?】utf8mb4 是 MySQL 中真正完整的 UTF-8;MySQL 的 utf8 最多 3 字节,不能存 emoji。
【什么是 BOM?】文件开头的 EF BB BF 三个字节,用来标记 UTF-8。网页和脚本文件建议不加。
【“䏿–‡”是什么乱码?】UTF-8 编码的“中文”被按 Latin-1/Windows-1252 解读的结果。
文中示例可以在本站对应工具中验证;处理密码、证件号等敏感数据时,请注意保护隐私。
标签: 文本处理