为什么当我的Ruby脚本输出到终端时,这个YAML数据中的ANSI转义字符没有被计算?

wz8daaqr  于 2023-06-05  发布在  Ruby
关注(0)|答案(1)|浏览(379)

我有这个YAML数据:

  • data.yml*
game:
  welcome: Welcome to \e[34myour\e[0m new chess game players.\n\n

我成功地访问了:

puts data['game']['welcome']

然而,当输出到终端时,ANSI转义字符格式化和换行符格式化都不起作用。它只是按字面意思打印出所有的字符。我试过/检查过:

  • terminal使用UTF-8编码,并且当直接用于ruby程序上的字符串字符时,会打印ansi转义格式。
  • 尝试用另一个\字符转义转义字符,例如\e[34myour\e[0m.这不管用

你知道我怎么才能让它工作吗?谢谢

ktca8awb

ktca8awb1#

YAML只允许双引号标量中的转义字符序列。参见YAML规范的第5.7节 * 转义字符 *[***粗体斜体***强调我的]:

5.7.转义字符

所有不可打印的字符必须 * 转义 。YAML转义序列使用大多数现代计算机语言通用的“\”表示法。每个转义序列都必须解析为相应的Unicode字符。原始转义序列是表示细节,不得用于传达内容信息。
请注意,转义序列
只在双引号标量中解释。在所有其他标量样式中,\”字符没有特殊含义并且不可打印字符不可用*。

相关问题