rb:bom|utf-8在Ruby中的CSV.open是什么意思?
What does rb:bom|utf-8 mean in CSV.open in Ruby?
'rb:bom|utf-8'
是什么意思:
CSV.open(csv_name, 'rb:bom|utf-8', headers: true, return_headers: true) do |csv|
我能理解:
r
表示读取
bom
是一种文件格式,文件开头带有 \xEF\xBB\xBF
表示字节顺序。
utf-8
是一种文件格式
但是:
- 我不知道它们是如何组合在一起的,以及为什么有必要编写所有这些来读取 csv
- 我正在努力寻找文档
这个。
中似乎没有记录
https://ruby-doc.org/stdlib-2.6.1/libdoc/csv/rdoc/CSV.html
更新:
找到一个很有用的文档:
https://ruby-doc.org/core-2.6.3/IO.html#method-c-new-label-Open+Mode
在 Ruby 中读取文本文件时,您需要指定编码,否则它将恢复为默认值,这可能是错误的。
如果您正在读取 BOM 编码的 CSV 文件,那么您需要这样做。
纯 UTF-8 编码无法处理 BOM header 因此您需要先阅读它并跳过该部分,然后再将数据视为 UTF-8。该符号是 Ruby 表达该要求的方式。
(接受的答案并非不正确但不完整)
rb:bom|utf-8
转换为人类可读的句子意味着:
以二进制模式(b
)打开文件进行读取(r
)并查找Unicode BOM标记(bom
)以检测编码或者,如果未找到 BOM 标记,则假设采用 UTF-8 编码 (utf-8
).
BOM 标记可用于检测文件是 UTF-8 还是 UTF-16,如果是 UTF-16,则检测是小端还是大端 UTF-16。还有一个 UTF-32 的 BOM 标记,但 Ruby 目前不支持 UTF-32。 BOM 标记只是 Unicode 标准中一个特殊的保留字节序列,仅用于检测文件的编码,并且必须是该文件的第一个 "character"。它被推荐并通常用于 UTF-16,因为它存在两种不同的变体,它对于 UTF-8 是可选的,通常如果文件是 Unicode 但没有 BOM 标记,则假定它是 UTF-8。
'rb:bom|utf-8'
是什么意思:
CSV.open(csv_name, 'rb:bom|utf-8', headers: true, return_headers: true) do |csv|
我能理解:
r
表示读取bom
是一种文件格式,文件开头带有\xEF\xBB\xBF
表示字节顺序。utf-8
是一种文件格式
但是:
- 我不知道它们是如何组合在一起的,以及为什么有必要编写所有这些来读取 csv
- 我正在努力寻找文档
这个。
中似乎没有记录 https://ruby-doc.org/stdlib-2.6.1/libdoc/csv/rdoc/CSV.html
更新:
找到一个很有用的文档: https://ruby-doc.org/core-2.6.3/IO.html#method-c-new-label-Open+Mode
在 Ruby 中读取文本文件时,您需要指定编码,否则它将恢复为默认值,这可能是错误的。
如果您正在读取 BOM 编码的 CSV 文件,那么您需要这样做。
纯 UTF-8 编码无法处理 BOM header 因此您需要先阅读它并跳过该部分,然后再将数据视为 UTF-8。该符号是 Ruby 表达该要求的方式。
(接受的答案并非不正确但不完整)
rb:bom|utf-8
转换为人类可读的句子意味着:
以二进制模式(b
)打开文件进行读取(r
)并查找Unicode BOM标记(bom
)以检测编码或者,如果未找到 BOM 标记,则假设采用 UTF-8 编码 (utf-8
).
BOM 标记可用于检测文件是 UTF-8 还是 UTF-16,如果是 UTF-16,则检测是小端还是大端 UTF-16。还有一个 UTF-32 的 BOM 标记,但 Ruby 目前不支持 UTF-32。 BOM 标记只是 Unicode 标准中一个特殊的保留字节序列,仅用于检测文件的编码,并且必须是该文件的第一个 "character"。它被推荐并通常用于 UTF-16,因为它存在两种不同的变体,它对于 UTF-8 是可选的,通常如果文件是 Unicode 但没有 BOM 标记,则假定它是 UTF-8。