如何在 Rails 中的 CSV 解析过程中更改编码

2024-03-13

我想知道导入并解析 CSV 文件时如何更改它的编码。我有这个代码:

csv = CSV.parse(output, :headers => true, :col_sep => ";")
csv.each do |row|
  row = row.to_hash.with_indifferent_access
  insert_data_method(row)
end

当我读取我的文件时,出现以下错误:

Encoding::CompatibilityError in FileImportingController#load_file
incompatible character encodings: ASCII-8BIT and UTF-8

我读到row.force_encoding('utf-8')但它不起作用:

NoMethodError in FileImportingController#load_file
undefined method `force_encoding' for #<ActiveSupport::HashWithIndifferentAccess:0x2905ad0>

Thanks.


我必须读取以 ISO-8859-1 编码的 CSV 文件。 做有记录的事情

CSV.foreach(filename, encoding:'iso-8859-1:utf-8', col_sep: ';', headers: true) do |row|

抛出异常

ArgumentError: invalid byte sequence in UTF-8
    from csv.rb:2027:in '=~' 
    from csv.rb:2027:in 'init_separators' 
    from csv.rb:1570:in 'initialize' 
    from csv.rb:1335:in 'new' 
    from csv.rb:1335:in 'open' 
    from csv.rb:1201:in 'foreach'

所以我最终读取了该文件并将其转换为UTF-8,然后解析字符串:

CSV.parse(File.open(filename, 'r:iso-8859-1:utf-8'){|f| f.read}, col_sep: ';', headers: true, header_converters: :symbol) do |row|
    pp row
end
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Rails 中的 CSV 解析过程中更改编码 的相关文章

  • 如何使用 Ruby 2.7.0 修复 Rails 的警告消息

    有没有人解决这个问题Ruby 2 7 0 I used rbenv并安装了 Ruby v2 7 0 然后使用创建了一个 Rails 项目Rails v6 0 2 1 目前 通过运行之一 rails s rails s u puma rail
  • (在 Ruby 中)允许混合类方法访问类常量

    我有一个为其定义常量的类 然后我定义了一个类方法来访问该类常量 这很好用 一个例子 usr bin env ruby class NonInstantiableClass Const hello world class lt lt self
  • 无需别名的 Ruby YAML 编写

    我正在从 ruby 将数据写入 yaml 文件 并且经常在该文件上添加别名 像 id001 somekey somevalue id001 就我而言 我使用 yaml 文件来aid可读性并将名称添加到文件中的值 因为现有数据只是 没有键的分
  • Eventmachine start_tcp_server 无接受器 - 端口正在使用或需要 root 权限(运行时错误)

    我已经 3 天无法运行本地服务器了 重新启动我的计算机没有帮助 有几次 在反复尝试大约 40 50 次之后 它随机地起作用了 我不明白为什么 我尝试过一次不同的端口并且有效 但从那以后 没有端口有效 每次我尝试运行我的 Rails 服务器时
  • 使用 fgetcsv 循环遍历 csv

    我有一个包含 3 列的 csv 文件 电子邮件地址 名 and 姓 我已经到了可以使用以下代码打印数组的阶段 这会打印数组 因此每个字段都在一行中 我希望它打印的只是该行第一列中的值 这是如何完成的 关于 fgetcsv 的文档对我 相对初
  • 方法调用中是否有记忆约定?

    我想避免在方法调用中重新评估值 直到现在 我一直在这样做 def some method some method begin lot s of code end end 但它最终变得非常丑陋 在一些代码中 我看到类似以下内容 def som
  • 在任意时间范围内找到最佳日/月/年间隔的算法?

    如果您有时间表 请说 March 19 2009 July 15 2011 是否有一种算法可以将该时间范围分解为 March 19 2009 March 31 2009 complete days April 1 2009 December
  • 设备注册控制器获取零资源的自定义操作

    基本上我想要有两个单独的操作来更改密码和更改电子邮件 而不是只有一个 我已经更新了我的路由以指向继承自 Devise RegistrationsController 的新控制器 我的路线 rb devise for users contro
  • 如何创建与 ActiveResource 对象的 ActiveRecord 关系?

    假设我正在为一家已经拥有 People 应用程序的出版公司编写一个图书馆应用程序 所以在我的图书馆应用程序中我有 class Person lt ActiveResource Base self site http api people m
  • Twitter Bootstrap 中下拉链接的模态

    我正在尝试从下拉菜单中的链接进行模式启动 该模式似乎已启动 网站变为灰色 但看不到 来自不在下拉列表中的常规链接的模态工作得很好 我对 jquery 进行了愚弄 但由于我是 jquery 的新手 所以没有任何结果 这是我的网站代码
  • 带有附加参数的redirect_to

    我是一个菜鸟 redirect to users url notice Succeed p p 然后我添加一个message它失败了 redirect to users url notice Succeed message test p p
  • 有谁知道一种更快的方法来执行 String.Split() 吗?

    我正在读取 CSV 文件的每一行 并且需要获取每一列中的各个值 所以现在我只是使用 values line Split delimiter where line是保存由分隔符分隔的值的字符串 衡量我的表现ReadNextRow我注意到它花费
  • save_and_open_page 已停止提供我的 CSS

    我的测试设置工作得很好 每当我打电话时 都能提供正确格式的 css 页面save and open page从测试中 然后 我设置了一些 javascript 测试 并对我的设置进行了一些更改 抱歉 我无法详细说明所有内容 我没有足够详细地
  • 未排序模式的 boost::Spirit 语法

    我有一个需要解析的模型模式的一部分 可以说它看起来像下面这样 type Standard hostname x y z port 123 属性是 元素可能看起来无序 属于架构一部分的所有元素都必须出现 而不是其他元素 所有元素的综合属性都进
  • SimpleDateFormat.parse() 忽略模式中的字符数

    我正在尝试解析一个可以具有不同格式的日期字符串 尽管字符串不应与第二个模式匹配 但它却以某种方式匹配 因此返回错误的日期 这是我的代码 import java text ParseException import java text Sim
  • 为什么解析器组合器“seq”用“bind”和“return”定义?

    我正在读这个article http eprints nottingham ac uk 237 1 monparsing pdf关于解析器组合器并且不理解以下内容 他们说使用seq 见下文 导致解析器将嵌套元组作为结果 操作起来很混乱 se
  • Ruby mp3 Id3 解析

    目前我正在从事一个音乐项目 处理用户 mp3 上传 问题是我找不到适用于所有文件的 id3 库 我努力了id3 ruby and Mp3Info库 但它们都没有给我一致正确的结果 例如 最常见的问题 错误的流参数 比特率和采样率 有时是持续
  • Rails Capistrano 3 - 如何将 production.log 文件共享到 Capistrano 的共享文件夹中?

    我正在使用 Capistrano 3 与我的 Rails 应用程序一起部署 问题是 每次我将应用程序部署到服务器时 log development log 文件都会重置 我听说可以将 production log 文件放入共享文件夹中并在每
  • Ruby 的字符串并置功能的官方文档在哪里?

    我最近意识到 如果你并置一系列 Ruby 字符串文字 例如 a b c 它相当于这些字符串文字的串联 但是 我在任何地方都找不到这种语言功能的记录 我使用术语 并置 和 串联 进行搜索 但只在几个 StackOverflow 响应中找到了对
  • Rails 3.1+ 的 Jasmine 与 Mocha JavaScript 测试 [已关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我对茉莉花有经验并且非常喜欢它 有谁有 Jasmine 和 Mocha 的经验 特别是 Rails 的经验吗 我想知道是否值得转用 我已经在 J

随机推荐

  • 在 C++ 中打印星号“三角形”

    我想制作一个打印此类输出的通用代码 这意味着用户可以输入任何值 整体 for 5 and for 3 这是我做的 但它打印出直角三角形 任何帮助 提前致谢 include
  • 如何避免在我的应用程序启动时中断已在播放的音频?

    我有一个应用程序需要使用AVAudioSessionCategoryPlayback为了在设备锁定或我的应用程序在后台时播放声音 这是一个闹钟功能 所以我还需要在 UIBackgroundModes 列表中设置 音频 键 我已将以下代码放入
  • 将事件处理程序附加到代码生成的数据模板

    我有一个相关问题this one https stackoverflow com questions 59451 creating a silverlight datatemplate in code 我正在尝试将事件附加到我的 Stack
  • Playframework 和 Twitter 流 API

    如何从 Twitter Streaming API POST 状态 过滤器读取响应数据 我已建立连接并收到 200 状态代码 但我不知道如何阅读推文 我只想在推文出现时将其打印出来 ws url url sign OAuthCalculat
  • 僵尸进程的父进程终止后会发生什么?

    我只是好奇 如果僵尸进程的父进程不关心等待它 会发生什么 假设 我们有一个父母和一个孩子 子进程先于父进程终止 来自APUE 内核为每个终止进程保留少量信息 最少该信息包括进程 ID 进程的终止状态 家长需要使用以下方式获取此信息waitp
  • 拥有方的主键作为连接列

    NOTE 主题很长但很详细 如果您使用 Doctrine2 和 oneToOne 关系 可能会派上用场 最近在Doctrine中遇到一个问题 我创建了具有 oneToOne 双向关系的 User 和 UserData 对象 User one
  • 将 Promise 包装在 async/await 中

    我在 async await 和从 Promise 返回值方面遇到了一些困难 function test return new Promise resolve reject gt resolve Hello async function c
  • 浏览器对蓝牙信标/iBeacons 的感知

    有没有办法让浏览器知道其附近的 iBeacon 设备 类似于 HTML5 地理定位的工作方式 如果不是 这是否可以通过浏览器插件来实现 该插件可以提供 javascript 使用的详细信息 很不幸的是 不行 没有 Web 浏览器在信标检测和
  • 在 C++ 中使用的脚本语言中在运行时创建新的类/成员 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我已经断断续续地解决这个问题几个月了 现在想要真正想出一个正确的解决方案来处理使用成员函数创建新的用户定
  • SQL Server /实体框架 - 如何按随机数排序然后稍后重现结果?

    我使用 ASP NET MVC 5 和实体框架以及 Microsoft SQL Server 后端 简短版本 我想执行搜索 按随机数对其中的部分进行排序 然后能够稍后显示搜索结果 详细版本 理论上假设我有一家商店 有 100 万件商品 每个
  • PHP 函数检查函数外部是否存在变量

    我需要一个 PHP 函数来检查函数外部是否存在变量 如果不存在 则为其指定默认值 该函数将类似于 function if exist argument default where argument将是函数外部的任何变量 它可以是变量的变量
  • 如何在验证中为特定列设置保留字?

    我有一个模型叫Community它有一个名为name 我用这个name在子域中 例如 当用户访问http rockstar test sample com 它显示的内容与http test sample com community rock
  • Pandas 如何在“loc”之后“替换”工作?

    我已经尝试了很多次 但似乎在使用 loc 后 替换 不能很好地工作 例如 我想将 conlumn b 替换为 conlumn a 值为 apple 的行的正则表达式 这是我的示例代码 df loc df conlumn a apple co
  • 是否可以在 C++ 中声明 switch 作用域之外的变量?

    简而言之 考虑下面的 伪 代码 switch n case 15 keyword customtemplate lt 15 gt t var I want it to be outside of switch break case 255
  • 在 write.csv 函数中指定路径

    我有一个简单的语法问题 有没有办法指定在其中写入 csv 文件的路径 csv函数本身 我总是做以下事情 setwd C Users user Desktop write csv dt my file csv row names F 不过 我
  • Grails:在普通的 groovy 类中获取数据源

    如何从普通的 groovy 类中访问数据源 注入的工作方式与服务不同 原因是我需要从 groovy 类执行一些手动数据库调用 即 使用 groovy sql Sql 类的 SQL 语句 因为我正在使用旧数据库 dataSource是一个自动
  • .NET C# 中的设置操作

    我现在正在研究与粗糙集相关的东西 该项目使用了大量的集合操作和操作 我一直使用字符串操作作为集合操作的权宜之计 它一直工作得很好 直到我们需要通过算法处理一些大量的数据 500 000 条记录 每条记录大约 40 多列 我知道 net 2
  • JSON SCHEMA:我们可以对类型进行非此即彼(字符串/整数)吗?

    我正在做一个架构来验证联系信息 在电话号码验证中 我们有一个国家代码 我真的希望有一种方法可以让国家 地区代码成为string or an integer 来自不同国家 地区的用户告诉我 国家 地区代码中有时会存在有意义的非整数字符 例如
  • Python 中的 PRTime 到日期时间

    我正在编写一个从文件中检索信息的脚本地点 sqlite 历史 并意识到它以 PRTime 格式存储时间 Python 中是否有可用的方法可以转换此日期时间 还是我必须自己制作 PRTime 是自 1970 01 01 以来的微秒数 请参阅h
  • 如何在 Rails 中的 CSV 解析过程中更改编码

    我想知道导入并解析 CSV 文件时如何更改它的编码 我有这个代码 csv CSV parse output headers gt true col sep gt csv each do row row row to hash with in