中文、日文、Emoji、特殊符号都离不开 Unicode。遇到乱码、\u4f60\u597d你、U+1F600 这类内容时,就需要理解不同表示方式。

你可以用 Unicode 编码转换工具 查看文本、码点、转义和实体。

U+ 码点是什么#

U+ 后面的数字表示 Unicode 码点。例如:

text已剪下 ✓
中 = U+4E2D

Emoji 往往码点更长,有些还由多个码点组合而成,所以看起来一个字符,实际长度可能不止一个。

\u 转义是什么#

JSON 或 JavaScript 里常见:

text已剪下 ✓
\u4f60\u597d

它表示“你好”。这不是乱码,只是 Unicode 转义表示。

如果接口返回可读性差,可以先用工具转回普通文本,再排查内容。

HTML 数字实体#

网页里还可能出现:

text已剪下 ✓
你好

这也是“你好”的另一种表示。HTML 实体相关问题可以配合 HTML 实体编码解码工具

乱码排查#

乱码常见原因:

  • 文件实际编码和声明编码不一致。
  • 后端响应头 charset 错误。
  • 数据库连接编码不一致。
  • 文本被重复编码或错误解码。

排查时先确认原始字节、声明编码和展示环境。

Emoji 长度不要用肉眼判断#

很多 Emoji 看起来是一个图标,实际可能由多个码点组合,例如肤色、性别、职业、国旗都可能是组合序列。前端限制“最多 10 个字符”时,如果直接按字符串长度计算,可能会出现截断半个 Emoji 的问题。

涉及昵称、短信、数据库字段长度时,要单独测试 Emoji 和中英文混排。

总结#

Unicode 是字符的统一编号,不同环境会用 U+、\u、HTML 实体或 UTF-8 字节表示它。

需要看清字符和转义关系时,可以用 Unicode 编码转换工具 转换,再判断是否是真乱码。