Ruby on rails UTF-8中的字节序列无效将文本插入数据库时出错

Ruby on rails UTF-8中的字节序列无效将文本插入数据库时出错,ruby-on-rails,ruby,utf-8,nokogiri,Ruby On Rails,Ruby,Utf 8,Nokogiri,我正试图在我的富文本中实现vignere密码。我正在使用Nokogiri提取节点的innerHTML并在其上实现密码 我的模型是: # Entry.rb class Entry < ApplicationRecord include EntriesHelper before_save :encode_content validates :content, presence: true def encode_content html_content=Nokogiri

我正试图在我的富文本中实现vignere密码。我正在使用Nokogiri提取节点的innerHTML并在其上实现密码

我的模型是:

# Entry.rb
class Entry < ApplicationRecord
  include EntriesHelper
  before_save :encode_content
  validates :content, presence: true

  def encode_content
    html_content=Nokogiri::HTML(self.content)
    nodes=html_content.css('p')
    nodes.each do |node|
      child=[]
      node.traverse{|n| child << n}
      text=child.first.text
      encoded_text=vignere_encoding(text)
      child.first.content=encoded_text
      puts child,encoded_text
    end
    modified_html=html_content.to_html
    self.content=modified_html.split("body>")[1][1..-4]
    save!
  end
end
一切正常。Vignere_编码函数正确返回编码字符串,并且在我试图将数据保存到数据库时,我得到了

Invalid byte Sequence in UTF-8

有人能告诉我如何实现这一点吗?

尝试在entry.rb顶部添加这一行

#编码:UTF-8


我怀疑的是,在执行拆分后,内容是否会被保存,通常这意味着你收到了垃圾数据。专注于将其分解成更小的问题。你的密码对已知的好文本有效吗?如果是这样的话,您试图处理的文档中有什么?我检查了密码的输出,它没有返回任何无效的文本。我尝试在密码的输出上拖动(“”),以消除无效字符。我仍然收到这个错误。甚至self.content.valid\u编码?让我相信这些东西通常更好地分解为单元测试(例如,
Test::unit
),以便您可以验证每个步骤是否正常工作。您的
.chr
调用是否可能引入了大于127个字符的值?这可能会有问题。这里的char值不会超过127。我用单元测试进行了检查,结果也失败了。您正在运行哪个版本的Ruby?还是没用。拆分后,我检查了编码,并将UTF-*作为其编码
Invalid byte Sequence in UTF-8