在 IO::CatHandle 中§
有关方法编码,请参阅上下文中的主要文档
multi method encoding(IO::CatHandle:)multi method encoding(IO::CatHandle: )
将调用者的 $.encoding
属性设置为提供的值。有效值与 IO::Handle.encoding
接受的值相同(使用值 Nil
切换到二进制模式)。所有源句柄(包括活动句柄)都将使用提供的 $.encoding
值。
(my = 'foo'.IO).spurt: 'I ♥ Raku';(my = 'bar'.IO).spurt: 'meow';with IO::CatHandle.new: ,
在 IO::Handle 中§
有关方法编码,请参阅上下文中的主要文档
multi method encoding(IO::Handle: --> Str)multi method encoding(IO::Handle: --> Str)
返回一个表示句柄当前使用的编码的 Str
,默认为 "utf8"
。 Nil
表示文件句柄当前处于二进制模式。指定可选的位置参数 $enc
会切换句柄使用的编码;指定 Nil
作为编码以将句柄置于二进制模式。
编码的接受值不区分大小写。可用的编码因实现和后端而异。在 Rakudo MoarVM 上,支持以下编码:
utf8 utf16 utf16le utf16be utf8-c8 iso-8859-1 windows-1251 windows-1252 windows-932 ascii
默认编码为 utf8,它会进行规范化为 Unicode NFC
(规范化形式 C)。在某些情况下,您可能希望确保不进行规范化;为此,您可以使用 utf8-c8
。在使用 utf8-c8
之前,请阅读Unicode:文件句柄和 I/O,以获取有关 utf8-c8
和 NFC
的更多信息。
从 Rakudo 2018.04 开始,还支持 windows-932,它是 ShiftJIS 的一种变体。
实现可以选择支持别名,例如,Rakudo 允许使用别名 latin-1
表示 iso-8859-1
编码,并使用带连字符的 utf 版本:utf-8
和 utf-16
。