无法在 JSON 中正确声明和显示 UTF-8 字符



我有一个 JSON 对象,其中一个属性包含一个静态特殊字符 - https://www.compart.com/en/unicode/U+1F514

我尝试将字符串存储为编码的 UTF-8"xF0x9Fx94x94"或尝试使用其十六进制值 -String.fromCharCode(0x1F514)或十进制值String.fromCharCode(128276)打印它 但这一切都会导致谷歌浏览器中的空字符/空方形字符。

我怎样才能正确地、静态地将此字符存储在一个简单的 JSON{header1:"____"}中,然后回显它?

也无法在 IntelliJ 中显示它 - 所以如果您对这个侧面问题有评论,将非常感谢。

由于历史原因,JavaScript 没有完全的 Unicode 支持,因为语言创建者认为 UTF-16 不需要超过 2 个字节来编码单个字符。JSON 继承了这一点,u实体只接受 4 个十六进制字符。

您需要使用一种解决方法,该解决方法基本上包括将实际的 4 字节 UTF-16 字符拆分为两个 2 字节字符,如下所示:

var raw = "🔔";
var doesNotWork = "u1F514";
var works = "uD83DuDD14";
console.log(raw, doesNotWork, works);

。或者摆脱实体,只转储实际的二进制字符:

var data = ["🔔"];
var json = JSON.stringify(data);
console.log(json, JSON.parse(json));

我认为问题是字体不支持这种符号,因此绘制了方形字符。如果没有特定原因说明为什么要使用此字符,则可以使用图标绘制它,或者在图标字体中使用字符。

最新更新