如何从两种可能编码的 CSV 文件中读取数据?
How to read data from a CSV file of two possible encodings?
我想从具有两种可能编码(UTF-8 和 ISO-8859-15)的 csv 文件中读取数据。我的意思是具有不同编码的不同文件。具有两种编码的文件不同。
现在我只能从一个utf-8编码的文件中正确读取数据。我可以通过添加一个额外的选项来实现吗?例如 。 encoding: 'ISO-8859-15'
我有:
def csv
file = File.open(file.tempfile)
CSV.open(file, csv_options)
end
private
def csv_options
{
col_sep: ";",
headers: true,
return_headers: false,
skip_blanks: true
}
end
一旦知道文件的编码方式,就可以在 CSV 选项中传递,即
external_encoding: Encoding::ISO_8859_15,
internal_encoding: Encoding::UTF_8
(这将确定文件是 ISO-8859-15,但您希望内部字符串为 UTF-8)。
所以策略是你先决定(在打开文件之前)你想要什么编码,然后使用合适的选项哈希。
我想从具有两种可能编码(UTF-8 和 ISO-8859-15)的 csv 文件中读取数据。我的意思是具有不同编码的不同文件。具有两种编码的文件不同。
现在我只能从一个utf-8编码的文件中正确读取数据。我可以通过添加一个额外的选项来实现吗?例如 。 encoding: 'ISO-8859-15'
我有:
def csv
file = File.open(file.tempfile)
CSV.open(file, csv_options)
end
private
def csv_options
{
col_sep: ";",
headers: true,
return_headers: false,
skip_blanks: true
}
end
一旦知道文件的编码方式,就可以在 CSV 选项中传递,即
external_encoding: Encoding::ISO_8859_15,
internal_encoding: Encoding::UTF_8
(这将确定文件是 ISO-8859-15,但您希望内部字符串为 UTF-8)。
所以策略是你先决定(在打开文件之前)你想要什么编码,然后使用合适的选项哈希。