Rails 对 'puts' 和 'return' 使用不同的编码

Rails uses different encoding for 'puts' vs 'return'

我有一个 Rails 方法是这样结束的:

puts encrypted
return encrypted

控制台输出:

#?$???z???e7Bw?1I?F???????s?w
=> "#\x9A$\xB1\xBA\xF4z\x8F\x97\xECe\a7Bw\xE01I\xEDF\xA6\xBE\xEA\xE0\xFC\xF6\xB9\x1Cs\x00\xC0w\x14"
  1. 为什么在同一个地方输出并且没有任何 encode/decode 指令时这些结果看起来不同?
  2. 如何让 Rails 在调用 puts encrypted 时输出更长的版本?

IRB 在转储它们之前对其值调用 inspect,以便在这种情况下公开可能输出为 ? 或更糟的代码。

尝试 p encrypted,然后尝试 puts encrypted.inspect