带引号的MIME媒体类型参数是否允许转义的引号?

问题描述 投票:0回答:1

对于Internet MIME媒体类型(RFC 6838),可以使用引号(RFC 2045)。例如,以下表示foobar的值:

text/plain;test="foobar"

但是我是否允许在带引号的参数中包含转义的引号?以下将代表foo"bar的值:

text/plain;test="foo\"bar"

如果是这样,那么转义的转义字符怎么办?以下将代表foo\bar的值:

text/plain;test="foo\\bar"

如何随意转义字符?以下内容将表示fooxbar的值,因为转义序列\x将仅表示x

text/plain;test="foo\xbar"

同样重要的是,哪个标准定义了这个?

我想至少允许使用转义的引号和转义的反斜杠,但是我在查找指定位置时遇到了麻烦。

escaping mime
1个回答
0
投票

我还没有完整的答案,但是我知道MIME类型参数值的WhatWG says必须包含HTTP quoted-string token code points。 WhatWG提供了自己的定义,但它引用了RFC 7230 § 3.2.6. Field Value Components,几乎可以进行任何转义:

quoted-string  = DQUOTE *( qdtext / quoted-pair ) DQUOTE
qdtext         = HTAB / SP /%x21 / %x23-5B / %x5D-7E / obs-text
obs-text       = %x80-FF
quoted-pair    = "\" ( HTAB / SP / VCHAR / obs-text )

但是请注意:

发件人不应在带引号的字符串中生成带引号的对,除非有必要引号DQUOTE和该字符串中出现的反斜杠八位字节。

还请注意,RFC 5322 § 3.2.1. Quoted characters也有一些规则。 RFC 6838控制媒体类型提到RFC 6532 § 3.2. Syntax Extensions to RFC 5322,尽管在参数值的上下文中并不清楚。

© www.soinside.com 2019 - 2024. All rights reserved.