// the object, which doesn't get exported
var someObject = {
my: 'object supports the function',
below: 'and it is quite long which',
is: 'why I split it off into its',
own: 'separate object.'
}
// the function, which does get exported
function myFunc(input) {
return someObject[input]
}
// this apparently works fine
module.exports = { myFunc }
是什么意思:
myFunc
我可以理解:
'rb:bom|utf-8'
表示已读CSV.open(csv_name, 'rb:bom|utf-8', headers: true, return_headers: true) do |csv|
是一种文件格式,在文件的开始处带有r
表示字节序。 bom
是文件格式但是:
更新:
找到了一个非常有用的文档: https://ruby-doc.org/core-2.6.3/IO.html#method-c-new-label-Open+Mode
答案 0 :(得分:2)
(接受的答案不是不正确,但不完整)
rb:bom|utf-8
转换为可读的句子意味着:
以二进制模式(r
)打开文件以进行读取(b
)并查找Unicode BOM标记(bom
)以检测编码,或者找不到BOM标记,请采用UTF-8编码(utf-8
)。
BOM标记可用于检测文件是UTF-8还是UTF-16,如果文件是UTF-16,则是小端大UTF-16还是大端大UTF-16。还有一个用于UTF-32的BOM标记,但是Ruby到目前为止不支持UTF-32。 BOM标记只是Unicode标准中的一个特殊保留字节序列,仅用于检测文件的编码,它必须是该文件的第一个“字符”。建议使用UTF-16,因为UTF-16有两个不同的版本,因此通常用于UTF-16;对于UTF-8,它是可选的;通常,如果文件是Unicode但没有BOM标记,则假定它是UTF-8。
答案 1 :(得分:1)
在Ruby中读取文本文件时,您需要指定编码,否则它将恢复为默认值,这可能是错误的。
如果您正在读取BOM编码的CSV文件,则需要这样做。
纯UTF-8编码无法处理BOM表头,因此在将数据视为UTF-8之前,您需要阅读并跳过该部分。这种表示法就是Ruby表达这一要求的方式。