我正在阅读此proposal for Base91,(我添加了粗体格式):
所有基于SMTP的电子邮件都可以提供与电子邮件的兼容性。所谓的与电子邮件的兼容性是将任意8位数据字节串或由电子邮件传输的任意位流数据转换为有限ASCII的字符串。对后者的主要限制是:
(a)字符必须是可打印的;
(b)字符不是控制字符或“ - ”(连字符) 共有94个这样的ASCII字符,它们相应的数字编码全部为32到126 ,但45 除外。以这些ASCII字符编写的电子邮件与Internet标准SMTP兼容,几乎可以在所有电子邮件系统中传输。
注意:45是连字符的ASCII值。
注意:我刚才发现该提案源自中国的专利(ZL00112884.1)和US (US6859151B2)。
但是我也阅读了关于SMTP的RFC 5321,我找不到任何使连字符成为可打印ASCII范围的排他限制的内容。
注意:可打印的ASCII范围是:
!“#$%&安培;'()* +, - / 0123456789:;?< => @ ABCDEFGHIJKLMNOPQRSTUVWXYZ [\] ^ _`ABCDEFGHIJKLMNOPQRSTUVWXYZ {|}〜
为什么Base91提案/专利声称“ - ”(连字符)是电子邮件兼容性的唯一限制?
答案 0 :(得分:5)
看起来连字符在多行SMTP邮件中用作控制/标记字符。
RFC5321 4.2.1 Reply Code Severities and Theory:
多行答复的格式要求每一行,但 最后,以回复代码开头,后接连字符, “-”(也称为减号),后跟文字。最后一行 以回复代码开头,之后紧跟
<SP>
(可选) 一些文本和<CRLF>
。如上所述,服务器应发送<SP>
如果未发送后续文本,但客户必须为此做好准备 省略。
Base91建议使用SMTP作为其应用和限制的示例。如您所述,它最初希望使用94个字符,但是由于各种标准(例如SMTP),它不包括常用的伪控制字符(“-”,“。”,“ =“)。它使用SMTP,是因为它表明了Base91编码的实用性(例如,每个字符使用13位数据而不是使用Base64编码6位数据可以大大减少编码任何给定消息所需的位数),此外还承认其使用了连字符作为控制字符不会在Base91文本中引起歧义。
Base91可以对任何文本进行编码-该文件指出它将13位数据映射为两个可打印的ASCII字符。 Base91可以编码任何数字,任何字符(包括换行符),类似于Base64可以编码任何字符。同样,可以反转此映射,以从Base91编码生成原始输出。
这是一个多行SMTP回复代码示例:
250-First line
250-Second line
250-234 Text beginning with numbers
250 The last line
在此示例中,它将包含连字符,换行符和数字的大型多行SMTP邮件转换为某种以Base91编码的形式。如果此编码形式包含伪控制字符(例如连字符),则SMTP客户端 可以将Base91编码的数据解释为格式错误的SMTP数据。由于SMTP的缺陷或SMTP本身的规范,从Base91字符集中删除字符(例如连字符)的目的不是不是,而是使用和解析SMTP数据的客户端,并确保客户端仍然可以正确接受Base91数据,而不会将其误解为SMTP数据。
答案 1 :(得分:0)
我的怀疑只是使base91对人们有时使用文本所做的事情(例如,跨文档的复制/粘贴)具有鲁棒性。指望这种情况会经常发生并没有多大意义,但有些文字处理程序等却没有多大意义。将使用破折号作为连字符。