Clash 文档中心中文使用手册

Clash 怎样核对加引号前后字段值没有变化

Clash 怎样核对加引号前后字段值没有变化。了解适用条件、操作步骤与常见问题的排查方法。

更新于 2026/10/4

核对加引号前后字段值没有变化,比较的是加载后的表示,不是源文件是否多了两个引号字符。YAML 把呈现与表示分开:引号、缩进、标量格式属于呈现;解析会丢掉这些细节,只留下序列化树,再组成表示图。规范要求构造原生数据结构只能使用表示里的信息,不得依赖节点样式或标量内容格式。因此,若引号只是样式,加载后的标量内容应相同;若引号触发了转义或类型解析,值就会变。

适用条件

适用于已经用单引号或双引号包住某字段、需要确认节点名或字符串没有被改写的场合。适用于从 plain 改为引号,或两种引号互换之后。尚未能加载的格式错误文件应先修流,再谈值是否不变。

核对步骤与判断依据

  1. 在两份流都能解析的前提下分别加载改前和改后文本。不要用肉眼看多了引号来下结论。
  2. 比较该节点的表示:种类是否仍为标量、字符内容是否一致。注释、键顺序、空白和样式都不应进入这次比较。第三章明确注释与节点样式不是构造依据。
  3. 排除看起来像同一串字、类型已经变了的情况。未加标签的节点类型取决于应用;规范示例用引号包裹数字得到字符串,同时列出整数、浮点、true、false、null。plain 形态的数字或布尔词与加引号后的同一字形可能不是同一个原生值。若你需要的本来就是字符串,类型变为字符串是预期变化;只有你要求字符序列与类型都不变时,才把类型变化判为未通过。
  4. 双引号会处理转义序列,单引号不提供那套转义。plain 改成双引号后若写入转义,加载得到的字符可能已不是原来那串。单引号里两个连续单引号对应一个单引号字符。flow 标量跨行时换行一律折叠;改引号时若拆成多行,空白可能被折叠。要保留换行应使用 |,其换行是显著的;> 则会把换行折成空格。
  5. 通过标准:两份表示中目标标量的字符序列一致,并且在你关心类型时解析类型也一致。仅源码不同而表示相同,属于允许的呈现差异。

失败时下一步

表示不一致时,先区分是转义、行折叠还是隐式类型造成的,不要继续叠加引号。若一方无法加载,先按格式不良修复。需要回退时使用改前的整份字符流:重新 dump 可能改变样式、注释和映射键顺序,不能当作同一份呈现,也就不能当作这次核对的基准。

资料来源: https://yaml.org/spec/1.2.2/

返回文章索引使用教程