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