Ruby 与多字节字符集和'putc'混淆`

Ruby 与多字节字符集和'putc'混淆`,ruby,Ruby,我试图了解它是如何工作的。我实际上是在做测试 以下是示例: $stdout.putc 63 #<~~~ A #?=> 63 $stdout.putc 191 #?=> 191 $stdout.putc 181 #?=> 181 $stdout.putc 166 #?=> 166 它取决于控制台的默认编码(或windows上的代码页)。您可以在cmd.exe中运行chcp进行检查 ASCII字符包含从\x00到\x7F的字符或控制字符。多字节字符集使用ISO-885

我试图了解它是如何工作的。我实际上是在做测试

以下是示例:

$stdout.putc 63 #<~~~ A
#?=> 63
$stdout.putc 191
#?=> 191
$stdout.putc 181
#?=> 181
$stdout.putc 166
#?=> 166

它取决于控制台的默认编码(或windows上的代码页)。您可以在
cmd.exe
中运行
chcp
进行检查

ASCII字符包含从
\x00
\x7F
的字符或控制字符。多字节字符集使用ISO-8859-1编码,其中包含ASCII和
\x80-\xFF
格式的字符。从您的帖子推断,控制台的默认代码页与ISO-8859-1不兼容,因此控制台不知道如何表示
\x80-\xFF
中的字符

在将其打印到控制台之前,需要进行一些编码转换

putc 191.chr.force_编码('ISO-8859-1')。编码('UTF-8'))
#UTF-8是我的Linux环境中使用的默认编码
#您需要将其替换为控制台的默认编码

这当然没用。Windows根本不使用UTF-8编码。您只需复制粘贴并忽略注释。此外,您可能会发现,您的控制台编码无法在“ISO-8859-1”中编码191,在我的计算机上,控制台使用GBK,并且没有该字符。您似乎精通此类
字符编码问题。
问题。:)你能加入吗-
D:\Rubyscript\My ruby learning days>ruby -v
ruby 2.0.0p0 (2013-02-24) [i386-mingw32]