JSON 和 Unicode 协同工作以支持全球所有语言。但编码问题仍然会导致 bug。以下是您需要了解的内容。
JSON 与 UTF-8
JSON 规范要求使用 UTF-8 编码。所有 JSON 字符串都是 Unicode 字符串:
{
"greeting": "Hello",
"chinese": "你好",
"japanese": "こんにちは",
"arabic": "مرحبا",
"emoji": "👋🌍"
}
Unicode 转义序列
JSON 支持任何字符的 \u 转义序列:
{
"chinese": "\u4f60\u597d",
"emoji": "\ud83d\udc4b",
"copyright": "\u00a9"
}
常见编码问题
乱码
当 UTF-8 JSON 被当作 Latin-1 解码时:
预期: 你好
实际: ä½ å¥½
修复: 始终在 HTTP 头中设置 Content-Type: application/json; charset=utf-8。
BOM 问题
文件开头的字节顺序标记可能破坏 JSON.parse():
// 解析前移除 BOM
const clean = jsonStr.replace(/^/, '');
const data = JSON.parse(clean);
代理对
Emoji 和罕见字符在 JSON 中使用代理对:
{
"emoji": "\uD83D\uDE00"
}
JavaScript 通过 JSON.parse() 自动处理。
最佳实践
application/json; charset=utf-8使用我们的 JSON 验证器 检查 JSON 文件中的编码问题。