mime身体猜测charset(并转换为UTF-8)

时间:2012-05-27 20:55:57

标签: ruby utf-8 mime quoted-printable

我正在尝试解析传入的电子邮件,并希望将正文存储为数据库中的UTF-8编码字符串,但我很快就注意到并非所有电子邮件都在{}中发送字符集信息{1}}标题。在尝试使用Content-TypeString.force_encoding进行一些手动快速修复后,我决定向友好的人们询问SO。

说实话,我暗中希望String.encode能够自动返回字符串中使用的编码,但是在我发送测试电子邮件后,它总是显示为String.encoding。当我实现ASCII-8BIT作为一个选项时,我开始遇到这个问题,如果我还获得了一些quoted-printable信息,这似乎有效。

;charset=blabla

我一直在试验我在互联网上找到的几个“解决方案”,但是大多数似乎与文件读/写有关,并且尝试了一些用于检测编码的宝石(但是似乎没有一个真的可以解决这个问题)令人难以置信的过时)。它应该是可能的,感觉好像答案正好盯着我,希望这里的某个人能够对我的情况有所了解并告诉我我做错了什么。

  • 使用ruby 1.9.3

2 个答案:

答案 0 :(得分:0)

您可以使用https://github.com/janx/chardet检测电子邮件文本的原始编码。

示例:

irb(main):001:0> require 'rubygems'
=> true
irb(main):002:0> require 'UniversalDetector'
=> false
irb(main):003:0> p UniversalDetector::chardet('hello')
{"encoding"=>"ascii", "confidence"=>1.0}
=> nil

答案 1 :(得分:0)

您是否尝试过https://github.com/fac/cmess

  

== DESCRIPTION

     

CMess捆绑了几个旨在处理的工具   在字符集和语境中出现的各种问题   编码。目前,有:

     

guess_encoding :: 用于识别给定编码的简单助手   串。                     包括自动检测编码的功能                     输入。

     

[...]