gpt4 book ai didi

ruby-on-rails - ActiveStorage CSV 文件强制编码?

转载 作者:太空宇宙 更新时间:2023-11-03 16:40:45 25 4
gpt4 key购买 nike

我有一个正在上传的 CSV 文件,在将行导入数据库时​​遇到问题:

Encoding::UndefinedConversionError(“\xCC”从 ASCII-8BIT 到 UTF-8)

什么是最有效的方法来确保每个列都被正确编码以放置在数据库中被忽略?

最基本的方法是遍历每一行和每个字段并强制对字符串进行编码,但这似乎效率极低。有什么更好的方法来处理这个问题?

目前只是作为参数上传(:csv_file)。然后我按如下方式访问它:

模型中的 CSV.parse(csv_file.download)

我假设有一种方法可以在对 activestorage 文件调用 CSV.parse 时强制进行编码,但不确定如何进行。有任何想法吗?

谢谢!

最佳答案

最新版本的 ActiveStorage (6.0.0.rc1) 添加了一个 API,可以将文件下载到临时文件,然后您可以从中读取。我假设 Ruby 将使用正确的编码从文件中读取。

https://edgeguides.rubyonrails.org/active_storage_overview.html#downloading-files

如果您不想升级到 Rails 6 的 RC(就像我一样),您可以使用此方法将字符串转换为 UTF-8,同时摆脱可能存在的字节顺序标记你的文件:

wrongly_encoded_string = active_record_model.attachment.download
correctly_encoded_string = wrongly_encoded_string.bytes.pack("c*").force_encoding("UTF-8")

关于ruby-on-rails - ActiveStorage CSV 文件强制编码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53586249/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com