Encoding::UndefinedConversionError - "\xC2" from ASCII-8BIT to UTF-8每次我尝试将哈希转换为JSON字符串时,我都会继续获取.我试着用[.encode | .force_encoding](["UTF-8" | "ASCII-8BIT" ]),链.encode带.force_encoding,向后切换参数,但似乎没有任何工作,所以我抓住了错误是这样的:
begin
menu.to_json
rescue Encoding::UndefinedConversionError
puts $!.error_char.dump
p $!.error_char.encoding
end
Run Code Online (Sandbox Code Playgroud)
菜单是续集的dataset.to_hash,内容来自MySQL DB,utf8_general_ci编码并返回:
"\ XC2"
<#Encoding:ASCII-8BIT>
无论我.encode/ .force_encoding我使用什么,编码都不会改变.我甚至试图在.gsub!(/\\\xC2/)没有运气的情况下更换琴弦.
有任何想法吗?
我正在使用IMAP从gmail接收一些电子邮件,然后使用新的Rails 3 ActionMailer接收方法解析它们.
raw_email = imap.uid_fetch(uid, ['RFC822']).first.attr['RFC822']
email = UserMailer.receive(raw_email)
Run Code Online (Sandbox Code Playgroud)
电子邮件现在是一个Mail :: Message Class,并且:,from和:subject工作正常.但是我无法弄清楚如何从身体中获取纯文本.在Rails 3之前,我可以使用tmail_body_extractors插件来获取普通的主体.
你会如何使用Rails 3做到这一点?
Jakobinsky:email.body.raw_source离我更近了仍然给了我很多垃圾.
"--001636310325efcc88049508323d\r \nConContent-Type:text/plain; charset = ISO-8859-1\r \nContent-Transfer-Encoding:quoted-printable\r \n\r \n这是一些正文内容\ r \n\r \n - = 20\r \nVenlig Hilsen\r \nAsbj = F8rn Morell\r \n\r \n - 001636310325efcc88049508323d\r \n内容类型:text/html; charset = ISO-8859-1\r \nContent-Transfer-Encoding:quoted-printable\r \n\r \naf 邮件
-
Venlig Hilsen Asbj
= F8rn Morell
\ r \n\r \n - 001636310325efcc88049508323d--"
我应该滚动自己的帮助器来清理raw_source还是已经有方法,宝石或帮助器?