我正在从 YouTube 中提取一些 UTF8 无效的 RSS 提要。我可以使用创建一个类似的 ruby 字符串
bad_utf8 = "\u{61B36}"
bad_utf8.encoding # => #<Encoding:UTF-8>
bad_utf8.valid_encoding? # => true
Ruby 认为这是一种有效的 UTF-8 编码,我很确定它不是。
与 Mysql 交谈时出现这样的错误
require 'mysql2'
client = Mysql2::Client.new(:host => "localhost", :username => "root")
client.query("use test");
bad_utf8 = "\u{61B36}"
client.query("INSERT INTO utf8 VALUES ('#{moo}')")
# Incorrect string value: '\xF1\xA1\xAC\xB6' for column 'string' at row 1 (Mysql2::Error)
在将它们发送到 MySQL 之前,如何检测或修复这些无效类型的编码?