Unicode & Ruby - 预期行为?

Unicode & Ruby - Expected behavior?

Ruby 版本:ruby 2.2.2p95(2015-04-13 修订版 50295)[x86_64-darwin14]

阅读线版本:6.2

我正在使用一些表情符号,除了 2. The 和表情符号外,其中许多都可以正常工作。这是一些终端输出:

(byebug) ""
"\u{1F32D}"
(byebug) ""
""
(byebug) ""
"\u{1F37E}"

有人能告诉我这是怎么回事吗?这只是 irb 的一些编码问题吗?我可能是雪盲,因为我一直在努力解决这个问题,所以如果需要更多信息来回答这个问题,请告诉我。

Ruby 可能会出于各种原因显示具有各种 反斜杠 编码的字符串,其中之一是不规则字符。例如:

"
"
# => "\n"
'"'
# => "\""

这并不意味着该字符串包含实际的反斜杠,而是 inspect 显示的版本包含反斜杠。这是一个悠久的传统,至少可以追溯到 1970 年代的 C 时代,其中 \n 等被理解为 "newline character".

对于表情符号,您可能会发现有些会显示,有些不会。这可能是您使用的 Ruby 版本与终端设置之间的交互作用。由于表情符号不断被引入,您可能会发现旧的可以正常显示,但 Ruby 对新的没有足够的信心按原样呈现它们,也许担心这是一个无效的 Unicode 字符。它没有显示空白或臭名昭著的 问号 字符,而是显示字符的文字代码。