UTF-8返回值说明:函数输出与类型

69 0

UTF-8 是 Unicode 最常用的存储编码,用 1–4 个字节表示一个字符:ASCII 字符 1 字节,拉丁字母扩展 2 字节,常用汉字 3 字节,emoji 等 4 字节。下面重点说明函数输出与类型。

UTF-8返回值说明

encode 返回字节序列;decode 返回字符串。非法字节在 strict 模式下抛出异常,在 replace 模式下变成 U+FFFD(�)。

new TextEncoder().encode("中");        // Uint8Array [228, 184, 173]
new TextDecoder("utf-8").decode(bytes);
// Node.js
Buffer.byteLength("123问", "utf8");    // 6

示例

输入:Hello

编码结果:48 65 6C 6C 6F

说明:按 UTF-8 共 5 字节。

命令行示例

# 查看文件编码
file -i notes.txt
# GBK 转 UTF-8
iconv -f GBK -t UTF-8 in.txt > out.txt
# 查看字节
echo -n "中" | xxd     # e4b8 ad

怎么选

新项目一律选 UTF-8;对接老旧的 Windows 软件、银行或政务系统时,按对方要求转换为 GBK/GB18030;MySQL 选 utf8mb4 而不是 utf8(后者最多 3 字节,存不了 emoji)。

UTF-8 与 GBK:UTF-8 覆盖全部 Unicode,汉字 3 字节;GBK 只覆盖简繁汉字和部分符号,汉字 2 字节,但不能表示 emoji 和多数外文。UTF-8 与 UTF-16:UTF-16 中 BMP 字符 2 字节,适合内存中处理(Java、JavaScript、Windows 内部),但不兼容 ASCII。

本站的字符编码检测工具可以直接处理,计算在浏览器本地完成,适合快速核对结果。

常见问题

【什么是 BOM?】文件开头的 EF BB BF 三个字节,用来标记 UTF-8。网页和脚本文件建议不加。

【“中文”是什么乱码?】UTF-8 编码的“中文”被按 Latin-1/Windows-1252 解读的结果。

【UTF-8 能表示所有汉字吗?】能,包括所有 CJK 扩展区汉字。

文中示例可以在本站对应工具中验证;处理密码、证件号等敏感数据时,请注意保护隐私。

署名:123问编辑部 · 最近修订:2026-11-11 · 已按编辑与审核说明检查;内容仅供参考,不构成医疗、法律或投资建议。发现错误可查看纠错方式。

标签: 文本处理

抱歉,评论功能暂时关闭!