我最近为一个应用程序实现了收到的电子邮件,男孩,我打开地狱之门了吗?从那以后,每隔一天都会收到一封电子邮件,让应用程序以不同的方式失败。
其中之一是电子邮件编码为UTF-7。大多数电子邮件都是ASCII,一些拉丁文编码,或谢天谢地,UTF-8。
Hotmail错误消息(如电子邮件地址不存在或配额超过)似乎以UTF-7的形式出现。不幸的是,UTF-7不是Ruby理解的编码:
> "hello world".encode("utf-8", "utf-7")
Encoding::ConverterNotFoundError: code converter not found (UTF-7 to UTF-8)
> Encoding::UTF_7
=> #<Encoding:UTF-7 (dummy)> 我的应用程序没有崩溃,它实际上处理电子邮件相当好,但它确实向我发送了一个关于潜在错误的通知。
我花了一些时间在googling上搜索,找不到实现转换的人,至少不是作为Ruby1.9.3编码::转换器。
所以,我的问题是,因为我从来没有收到过一封有实际内容的电子邮件,来自一个实际的人,在UTF-7中,这种编码有多大的相关性?我能安全地忽略它吗?
发布于 2012-09-06 17:09:12
UTF-7的唯一相关特性(例如UTF-8 )是7位编码,就像好的旧ASCII一样。这意味着它可以在一个不是8个位清洁的系统上工作。
今天这一点甚至重要的唯一大型系统是邮件服务器(不要问我为什么他们在10-20年前没有解决这个问题,大多数服务器是这样做的,但表面上仍然没有)。
因此: UTF-7只在电子邮件系统中有关联。在其他任何地方,UTF-8是更好的选择。
发布于 2012-09-06 17:36:12
感谢Charles Salvia的评论,我在IMAP模块中找到了一种帮助您的方法:
require "net/imap"
Net::IMAP.decode_utf7(mail_body)https://softwareengineering.stackexchange.com/questions/163930
复制相似问题