能否在JSON-LD中使用HTML实体?特殊字符替换合规性咨询
有效性判断及影响说明
- 你提供的替换后内容不属于有效可正常工作的JSON-LD:JSON语法仅支持
\u开头的Unicode转义序列,不识别HTML实体编码ñ,该编码会被JSON解析器直接识别为普通字符串,最终解析出的名称会是错误的Santo Niño,而非你预期的Santo Niño。 - 该问题一定会导致Google富结果生成异常:Google的结构化数据解析逻辑不会对JSON-LD内的HTML实体做二次解码,错误的字符串既不符合你页面的实际内容语义,也会因为字段内容不符合schema的预期要求,被判为无效结构化数据,无法触发对应富结果展示。
修复方案
- 对JSON-LD内容和普通HTML内容做转义逻辑隔离:普通HTML文本中的
ñ可以继续用ñ做实体转义,但<script type="application/ld+json">标签内的内容不需要做HTML实体转义,直接保留原始ñ字符即可,只要你的网页已声明UTF-8编码,JSON-LD内的Unicode字符都可以被正常识别。 - 如果无法修改全局自动转义规则,可以在JSON-LD中使用符合JSON规范的Unicode转义序列表示
ñ,即\u00f1,对应字段修改为"name": "Santo Ni\u00f1o"即可被所有解析器正确识别。
内容的提问来源于stack exchange,提问作者JAT86
相关产品推荐
相关产品推荐

