Text :: CSV支持的编码

Val*_*kas 7 csv raku

在哪里可以找到Text :: CSV支持的编码?是否不支持“ latin1”或语法错误?

这确实失败了:

use Text::CSV;

spurt '/tmp/test.csv', 'ID;Gerät;Nr', :enc<latin1>;

slurp '/tmp/test.csv', :enc<latin1>; #ok

say csv :in</tmp/test.csv>, :encoding<latin1>, :sep_char<;>; 
#Malformed UTF-8 error
Run Code Online (Sandbox Code Playgroud)

jjm*_*elo 7

代码中存在错误:打开文件时,实际上并未使用声明的编码。我在模块中创建了一个问题,并通过该拉取请求对其进行了修复


cal*_*ter 5

看来,有关的文档Text::CSV要求传递给的值encoding必须与open函数的encodingparameter 接受的值相同

IO::Handle::encoding方法文档中列出了可能的值列表:

接受的编码值不区分大小写。可用的编码因实现和后端而异。在Rakudo MoarVM上,支持以下功能:

  • utf8
  • utf16
  • utf16le
  • utf16be
  • utf8-c8
  • iso-8859-1
  • windows-1251
  • windows-1252
  • windows-932
  • ascii

默认编码为utf8,将其标准化为Unicode NFC(标准化形式的规范化)。在某些情况下,您可能要确保不执行任何标准化操作。为此,您可以使用utf8-c8。在使用之前,utf8-c8请阅读Unicode:文件句柄和I / O,以获取有关utf8-c8和NFC的更多信息。

从Rakudo开始windows-932,还支持ShiftJIS的变体2018.04。

实现也可以选择提供对别名的支持,例如Rakudo允许别名latin-1用于iso-8859-1编码和utf虚线版本:utf-8utf-16