<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="61" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[61]</anchor-end> <dfn>encoded-word</dfn> は、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">電子メール</anchor>や <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">MIME</anchor>
の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ヘッダー</anchor>で用いられる、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文字列</anchor>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">符号化</anchor>のための構文です。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="62" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[62]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">電子メール</anchor>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ヘッダー</anchor>で<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">非ASCII文字</anchor>を安全に取り扱うための構文として開発され、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">MIME</anchor> の一部となりました。</p><section><h1>仕様書</h1><refs xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><ul xmlns="http://www.w3.org/1999/xhtml"><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="51" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[51]</anchor-end> <cite xml:lang="en">RFC 2231 - MIME Parameter Value and Encoded Word Extensions: Character Sets, Languages, and Continuations</cite> (<time>2014-09-14 04:20:18 +09:00</time> 版) <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://tools.ietf.org/html/rfc2231#section-5">http://tools.ietf.org/html/rfc2231#section-5</anchor-external></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="56" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[56]</anchor-end> <cite>RFC Errata Report</cite> (<time>2014-10-28 09:17:28 +09:00</time> 版) <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://www.rfc-editor.org/errata_search.php?rfc=2231">http://www.rfc-editor.org/errata_search.php?rfc=2231</anchor-external></li></ul></refs></section><section><h1>構文</h1><pre>   encoded-word = &quot;=?&quot; charset [&quot;*&quot; language] &quot;?&quot; encoding &quot;?&quot; encoded-text &quot;?=&quot;
     ; RFC 2231 では「&quot;?&quot; encoding」欠落。 <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://www.rfc-editor.org/errata.html">http://www.rfc-editor.org/errata.html</anchor-external>
   charset   = &lt;registered character set name&gt;       ; RFC 2047 では token
   language  = &lt;registered language tag [RFC-1766]&gt;  ; RFC 2047 では token
   encoding  = token   ; see section 4
   token     = 1*&lt;Any CHAR except SPACE, CTLs, and especials&gt;
   especials = &quot;(&quot; / &quot;)&quot; / &quot;&lt;&quot; / &quot;&gt;&quot; / &quot;@&quot; / &quot;,&quot; / &quot;;&quot; / &quot;:&quot; / &quot;
               &lt;&quot;&gt; / &quot;/&quot; / &quot;[&quot; / &quot;]&quot; / &quot;?&quot; / &quot;.&quot; / &quot;=&quot;
   encoded-text = 1*&lt;Any printable ASCII character other than &quot;?&quot;
                     or SPACE&gt;
                  ; (but see &quot;Use of encoded-words in message
                  ; headers&quot;, section 5)</pre></section><section><h1>変換例</h1><section><h1>=?us-ascii?q?ABC?=</h1><p>「ABC」</p></section><section><h1>&quot;=?us-ascii?q?ABC?=&quot;</h1><p>「&quot;=?us-ascii?q?ABC?=&quot;」 </p><p>構造化領域では、 quoted-string 内で
encoded-word は使えない。非構造化領域では、隣接文字と
WSP で離す必要がある。</p></section><section><h1>&quot; =?us-ascii?q?ABC?= &quot;</h1><p>構造化領域で word の代わりに phrase の一部として出現する
時は「&quot; =?us-ascii?q?ABC?= &quot;」。 comment や非構造化領域では
「&quot; ABC &quot;」 。</p></section><section><h1>(=?us-ascii?q?ABC?=)</h1><p>構造化領域 (で comment として認められる) 場合 「(ABC)」。
非構造化領域の場合「(=?us-ascii?q?ABC?=)」。</p><p>comment の場合は周りの括弧と encoded-word がくっついても良い。</p></section><section><h1>( =?us-ascii?q?ABC?= )</h1><p>「( ABC )」。</p><p>非構造化領域では周りの文字と離す必要があるので、こうする。
comment では、 RFC 2047 に記述はないが、 WSP がそのまま残ると思われる。
(記述が無いということは、例外ではないということでしょう。)</p></section><section><h1>(=?ISO-8859-1?Q?a?=b)</h1><p>「(=?ISO-8859-1?Q?a?=b)」。</p><p>非構造化領域では周りの文字と離さないと encoded-word にならない。
comment では「b」と離さないといけない。</p></section><section><h1>(=?ISO-8859-1?Q?a?= b)</h1><p>comment の場合 「(a b)」。非構造化領域では
「(=?ISO-8859-1?Q?a?= b)」。</p></section><section><h1>=?ISO-8859-1?Q?a?= =?ISO-8859-1?Q?b?=</h1><p>「ab」。</p><p>encoded-word 間の (F)WSP は無視される。</p></section><section><h1>=?ISO-8859-1?Q?a_b?= あるいは </h1><ol><li>?ISO-8859-1?Q?a?= =?ISO-8859-2?Q?_b?=</li></ol><p>「a b」。</p><p>encoded-word 間に当たる場所に WSP を入れるには、
どっちかの encoded-word に含めるか、一つにまとめる。</p></section><section><h1>=?us-ascii?q?ABC?=, =?us-ascii?q?DEF?=</h1><p>「=?us-ascii?q?ABC?=, DEF」</p><p>構造化領域で phrase 内の word 
の代わりであっても、 encoded-word との区切りに WSP が必要。</p></section><section><h1>=?us-ascii?q?ABC?=DEF</h1><p>「=?us-ascii?q?ABC?=DEF」</p><p>同じく。</p></section><section><h1>=?us-ascii?q?ABC?= DEF</h1><p>「ABC DEF」。</p><p>これは正しく復号できる。</p></section><section><h1>=?us-ascii?q?ABC?==?us-ascii?q?DEF?=</h1><p>「=?us-ascii?q?ABC?==?us-ascii?q?DEF?=」。</p><p>RFC 2047 の解読処理手順に従うとまず長い一つの encoded-word と
考えるが、 encoded-word 文法に合致しないので、普通の文字列とする。</p></section><section><h1>=?us-ascii?q?ABC DEF?=</h1><p>「=?us-ascii?q?ABC DEF?=」。</p><p>encoded-word 文法に合致しない。</p></section></section><section><h1>encoded-word の出現場所とそれにまつわる問題</h1><ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="5" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[5]</anchor-end> <strong><code class="ABNF">encoded-word</code> の使用の有無</strong>
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">電子メイル</anchor>, <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">電子ニュース</anchor>において、
<code class="ABNF">encoded-word</code> が使われているか識別する方法はない。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">MIME-Version:欄</anchor>の有無で識別出来るとする考え方もあるが、仕様によればこれは関係ない。
(RFC 2047 参照) RFC 1342 の公布の月の前後で区別するとか? :-p</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="4" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[4]</anchor-end> <strong><code class="ABNF">quoted-string</code> 内</strong>
<code class="ABNF">quoted-string</code> 中に <code class="ABNF">encoded-word</code>
もどきを入れる実装がある。それを解読する実装もある。どっちも違法。
但しそれを正当化する仕様も一部ある。 (See <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Content-Disposition:欄</anchor>,
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="75" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">quoted-string</anchor>。)</li></ul><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="64" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[64]</anchor-end> 
<code>application/x-kddi-auc</code></p><section><h1>空白間隔の取り扱いの問題</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="2" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[2]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">空白間隔</anchor>の扱いについて色々問題が。
「ABCあいう」という文字列があるとき、これを符号化するには「ABC」も含めないと、間に間隔が入ったり入らなかったり。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="3" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[3]</anchor-end> <code class="ABNF">encoded-word</code> の周りの間隔についての話は RFC 1342 に無くて、その時以来の実装や手抜き実装は間隔を
(無視していけないのに) 無視したり (無視しないといけないのに) 無視しなかったりする。
しかも単語中だろうがお構いなしにする (RFC 2047 的には妥当だが。)
から、 Subject 中になぜか間隔があって、しかも返信するごとにそれが増えていったりする。
<form xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" ref="comment"></form></p><section><h1>特に、折畳みの問題</h1><ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[1]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Opera</anchor> 6.05 の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">MUA</anchor> を使っていて、一覧を見てて最近は 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Subject:欄</anchor>書かないとかちょんぎれてるとかの人が多いんだなーと思ってたら、メッセージ表示欄にはちゃんと
Subject が出てました。つまり、 encoded-word
なんかを使ったせいで長くなってしまって折り返しているのを、 plain text
的に最初の行だけ取り出して一覧に表示したから、変に短い Subject だったり 
「Re:」だけだったりに見えたんです。昔はこういう MUA
や<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ニュース・リーダー</anchor>が多かった
(しかも表示だけじゃなくてそのまま並べ替えて壊すやつとかもいた)
んですけど、今でもあるとは驚き!
<form xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" ref="comment"></form></li></ul></section></section><section><h1>comment と encoded-word</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="7" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[7]</anchor-end> comment 内の encoded-word の解読は厄介。 quoted-pair の unquote
と encoded-word の解読のどちらを先にするか。 pair を先にすると
encoded-word もどきが出てくる可能性がある。 word を先にすると
pair もどきが出てくる可能性がある。だから両方一度にまとめるしかない。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="8" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[8]</anchor-end> comment 内の encoded-word は linear-white-space で他の
ccontent と離すことになっている。でも RFC 822 では
comment 内に lws は出現しないはずだ。 (0x09 や 0x20 は
ctext に含まれる。)</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="9" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[9]</anchor-end> <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="8" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;8</anchor-internal> 上記の解釈は(たぶん)誤り。 ctext は linear-white-space (SP や HTAB そのもの
ではなく) を包含している。 RFC 2822 では ctext から lws を追い出して、
ccontent に FWS を入れてもいいと明示。 See <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">comment(注釈)</anchor></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="10" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[10]</anchor-end> comment 内の encoded-word は「(」「)」とくっつけることが出来る。
では、 nest した comment の外側とはくっつけることが出来るのか。
(例<anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="11" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;11</anchor-internal>)<ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="11" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[11]</anchor-end> (foo (hoge)=?us-ascii?q?aiueo?= bar)</li></ul></p><p>RFC 2047 には明記はない。 BNF は linear-white-space については当てにならない。
考え方としては、 encoded-word 
のすぐ外側の括弧にはつけることが出来るとするのが自然と思われる。
つまり <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;1</anchor-internal> は不正であって <code class="ABNF">encoded-word</code> ではない。<ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="22" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[22]</anchor-end> 電子メイルでは <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC822</anchor>/<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC2822</anchor>/<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">MIME</anchor> 構造化頭欄の注釈以外に、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">DSN</anchor> や <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">MDN</anchor> の構造化欄の注釈でも使えます。</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="30" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[30]</anchor-end> <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="11" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;11</anchor-internal> が言いたいことはよくわかんないけど、 RFC 2047 の解読算法解説を参考に考えると、 <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="11" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;11</anchor-internal> は不正な可能性があるな。</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="31" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[31]</anchor-end> <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="30" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;30</anchor-internal> まあとにかく、 )=? はしないほうがいいってこった。</li></ul></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="47" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[47]</anchor-end> でも <code class="ABNF" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">encoded-word</anchor></code> の本来の意図は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">非ASCII文字</anchor>を含む
「<code class="ABNF" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">word</anchor></code> にしたいもの」を
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 822</anchor> の <code class="ABNF" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">atom</anchor></code> になるように<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">符号化</anchor>することでしょうから、
まず <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 822</anchor> に従い<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">字句解析</anchor>を行い、その結果が
<code class="ABNF" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">encoded-word</anchor></code> の構文に合致すれば<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">復号</anchor>するというのが本来の意図に沿った動作でしょう。</p><p>それに従えば、 <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="11" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;11</anchor-internal> の例も<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">復号</anchor>されてしかるべきだと思います。</p><form xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" ref="comment"></form></section><section><h1>encoded-word が使える電子メイルの欄</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="12" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[12]</anchor-end> RFC 2047 には次のような記述がある。</p><ul><li>「encoded-word」は「addr-spec」のどこにも出現しては<strong>いけません</strong>。 </li><li>「encoded-word」は「quoted-string」中に出現しては<strong>いけません</strong>。 </li><li>「encoded-word」は Received (受信) 頭領域中で使用しては<strong>いけません</strong>。 </li><li>「encoded-word」は MIME Content-Type (内容型), Content-Disposition 領域の parameter 中や「comment」や「phrase」内を除くどの構造化領域本体でも使用しては<strong>いけません</strong>。 </li></ul><p>この直前には、非構造化領域 (*text), comment, phrase 中の word の置き換え
として<strong>のみ</strong> encoded-word が使える、と書いてある。
その補足が上記の表なんだけど。疑問点:</p><ul><li>Received: 領域の comment で encoded-word を使っていいのかどーか。</li></ul><p>わざわざ注記してあるってことは、例外で使ってはいけないのかもしれないし、
あるいは単なるミスなのか。<ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="26" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[26]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC2557</anchor> (<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">MHTML</anchor>) は、電子メイルで使われる <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Content-Location:欄</anchor>について、不正な URI が使われる場合 (例えば <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">SP</anchor> を含む場合も。) には <code class="ABNF">encoded-word</code> を使わなければ<strong>ならず</strong>、解読しなければ<strong>なりません</strong>。 (4.4.1, 8.2)</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="32" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[32]</anchor-end> <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="12" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;12</anchor-internal> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC2821</anchor> なんかでは <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">comment</anchor> 内の書式も決めてる関係かもしれないとも思うが、よくわからんのう。</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="33" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[33]</anchor-end> <weak xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">2003-01-05 08:59</weak> <em><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">US-ASCII</anchor></em>: <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC822</anchor> 拡張構造化欄に該当するものの中身である &quot;(&quot; ... &quot;)&quot; は、必ずしも <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">comment</anchor> とは限りません。例えば <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Content-Features:</anchor> 欄は全部注釈・・・であるはずがないでしょ? (ちょっと前の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ietf-822</anchor> の話題。)
<form xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" ref="comment"></form></li></ul></p></section><section><h1>HTTP において encoded-word が使える場所</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="6" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[6]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 2616</anchor> までは<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">符号化語</anchor>が <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTTP</anchor> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ヘッダー</anchor>の一部で使えることになっていました。
しかし実際には誰も実装していませんでした。この規定は <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 723x</anchor> 
では削除されています。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="13" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[13]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC2616</anchor> (<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTTP/1.1</anchor>) によると、<ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="14" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[14]</anchor-end> <code class="ABNF">TEXT</code> ;; RFC 2616 2.2</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="16" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[16]</anchor-end> <code class="ABNF">warn-text = quoted-string</code> ;; RFC 2616 14.46 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Warning:欄</anchor></li></ul></p><section><h1>TEXT</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="15" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[15]</anchor-end></p><blockquote><p>The TEXT rule is only used for descriptive field contents and values
that are not intended to be interpreted by the message parser. Words
of *TEXT MAY contain characters from character sets other than ISO-8859-1 [22]
only when encoded according to the rules of RFC 2047 [14].</p><p><ins>TEXT 規則は記述的な欄内容及び値であってメッセージ解析器により解釈されることを意図していないものににも使うことが出来ます。 *TEXT の言葉は、 RFC 2047 の規則に従って符号化される場合に限って ISO-8859-1 以外の文字集合の文字を含めても<strong>構いません</strong>。 (RFC 2616 2.2)</ins><ul><li>TEXT           = &lt;any OCTET except CTLs, but including LWS&gt;</li></ul></p></blockquote><p><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="14" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;14</anchor-internal> RFC 2616 の「メッセージ解析器により解釈されることを意図していないもの」
をどう解釈するのが良いのか分かりませんが、とりあえず <code class="ABNF">TEXT</code>
が使われているのは、<ul><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">comment</anchor> (<code class="ABNF">ctext = &lt;any TEXT excluding &quot;(&quot; and &quot;)&quot;&gt;</code>)</li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">quoted-string</anchor> (<code class="ABNF">qdtext         = &lt;any TEXT except &lt;&quot;&gt;&gt;</code></li><li>応答の状態行 (<code class="ABNF">Reason-Phrase  = *&lt;TEXT, excluding CR, LF&gt;</code>)</li><li>非構造化欄</li></ul></p><p>です。このうち <code class="ABNF">quoted-string</code> で使えるのはどんなもんかと思いますな。<ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="18" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[18]</anchor-end> <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="17" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;17</anchor-internal> で別途明記されている <code class="ABNF">warn-text</code> として使われる以外の場合, 特に parameter の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">value</anchor> として使われる場合については明記がありませんねえ。</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="20" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[20]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC2068</anchor> (HTTP/1.1) でも同様に規定されています。 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC1945</anchor> (<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTTP/1.0</anchor>) では <code class="ABNF">encoded-word</code> には触れていません。 (その代わり <code class="ABNF">TEXT</code> にはどんな8ビットの<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文字コード</anchor>も使えました。)</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="21" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[21]</anchor-end> ちなみに、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RTSP</anchor> や <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">SIP</anchor> は <code class="ABNF">encoded-word</code> には触れていません。 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">UTF-8</anchor> を使っていますし、使えないのでしょう。
<form xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" ref="comment"></form></li></ul></p></section><section><h1>warn-text</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="17" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[17]</anchor-end> <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="16" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;16</anchor-internal> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Warning:欄</anchor>で使われる <code class="ABNF">warn-text = quoted-string</code>
は「If a character set other than ISO-8859-1 is used, it <strong>MUST</strong> be encoded
in the warn-text using the method described in RFC 2047 [14].」と、
<anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="15" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;15</anchor-internal> 同様に規定されています。<ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="19" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[19]</anchor-end> RFC 2068 (HTTP/1.1) でも同様に規定されています。 RFC 1945 (HTTP/1.0) には Warning: 欄はありません。
<form xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" ref="comment"></form></li></ul></p></section></section></section><section><h1>言語指定</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="35" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[35]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 2231</anchor> で <code class="ABNF" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">encoded-word</anchor></code> の構文が拡張され、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">charset</anchor> の後に <code>*</code> と<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">言語タグ</anchor>を指定できるようになりました <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="51" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;51</anchor-internal>, <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="56" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;56</anchor-internal></src>。</p><example xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><p xmlns="http://www.w3.org/1999/xhtml"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="52" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[52]</anchor-end> 次の例 <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="51" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;51</anchor-internal></src> は、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">符号化</anchor>された部分の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">言語</anchor>が <code class="lang" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">EN</anchor></code>
であることを表しています。</p><pre xmlns="http://www.w3.org/1999/xhtml" class="822 code">From: =?US-ASCII*EN?Q?Keith_Moore?= &lt;moore@cs.utk.edu&gt;</pre></example><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="53" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[53]</anchor-end> 一つの <code class="ABNF" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">encoded-word</anchor></code> では1つの<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">言語</anchor>しか指定できませんが、
<code class="ABNF" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">encoded-word</anchor></code> の長さは任意に短くできるので、
文字列の任意の部分に任意の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">言語タグ</anchor>を指定することができます。</p><comment-p xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="54" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[54]</anchor-end> ただしオーバーヘッドは劇的に増加します。また <code xmlns="http://www.w3.org/1999/xhtml" class="ABNF" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">encoded-word</anchor></code>
間の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">空白</anchor>の取り扱いは<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">相互運用性</anchor>が高くないので、実装によっては言語の区切れ目に<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">空白</anchor>が現れたり、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">返信</anchor>を繰り返すうちに<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">空白</anchor>がどんどん増えていったりする危険性もあります。</comment-p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="36" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[36]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ietf-822</anchor> や <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ietf-usefor</anchor> で <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">MIMEr</anchor> は、生 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">UTF-8</anchor> header
なんて認められん、 <code>encoded-word</code> 
の言語指定の分情報損失じゃないか、と言ってます。</p><p>それに対して <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CharlesLindsey</anchor> は、どうしても使いたいんなら <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unicode</anchor>
言語タグでも使ってろホ゛ケェと言ってます。 MIME'r 
よ、お前ら単に7ビットと言いたいだけちゃうんかとか、言語タグとか本気で言ってるのかこの
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unicoder</anchor> めとか、そういう話は置いといて、実際に言語指定に対応した <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">UA</anchor>
とか、言語指定が付いたメッセージなんてどれだけ存在するのか。</p><p><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">mail-people</anchor> は特に何も言ってこないし、 Charles
はあったとしても日本か中国くらいじゃない? と言っている。
しかし日本でも中国でも、言語指定のあるメッセージなんて見たことが無いよね。
1468bis は <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ISO-2022-JP</anchor> な <code>encoded-word</code> で言語指定は使うなとまで言っているのでして。</p><p>そもそも日本のほとんどの実装は、 <code>encoded-word</code>
対応といっても <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ISO-2022-JP</anchor> の <code>B</code> 符号化に<em>しか</em>対応してないのが普通だったりもしますからな。
(ひどいのになると、 <code>ISO-2022-JP</code> や <code>B</code>
の大文字・小文字の区別をしないのとかもある。)</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="37" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[37]</anchor-end> ということからして、この世界に実質的に <code>encoded-word</code>
の言語指定なんて使ったメッセージは存在しないのでは、と強く疑われます。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="38" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[38]</anchor-end> <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="37" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;37</anchor-internal> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">manakai</anchor> みたいに言語情報をちゃんと扱える <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">UA</anchor>
は他にもあるはずだけど、それを有意義に使えているかどうか。
(manakai は捨ててる同然だし、生成の時には使えないし。)</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="39" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[39]</anchor-end> <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="38" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;38</anchor-internal> 生成側としては、言語情報をそもそも持っていなければつけようが無い。
で、言語情報は実質的に利用者に指定させるしか得る方法がない。
(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">IM</anchor> と連携して云々とか考えられるけど、現状では無理だな。)</p><p>文脈を検討せずに、設定から自動で得て文字列全体に適用する
(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">conneg</anchor> 設定の流用とか。) のだと、 <samp>日本語れんしゅうちゅう。</samp>
に <code class="LANG">en</code> とかつけかねないし、きめ細かい実装がないとかえって有害。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="40" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[40]</anchor-end> 構文解析とか、そういう苦労して言語情報つけた割に得られ得る利点が
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CJK</anchor> glyph selection くらい (それもたいして役に立たない。)
だと、やっぱり実装する気になんてならないよなあ。</p><form xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" ref="comment"></form></section><section><h1>その他実装について</h1><p>符号化は面倒。特に ISO-2022-JP だったりすると、</p><ul><li>encoded-word は全体で75文字以内にする必要がある。</li><li>ので、長い文字列を切る必要がある。</li><li>その時、最後は ASCII に戻しておく必要がある。</li><li>おっと、切る時には文字の途中で切ってはいけない。</li></ul><p>とかやややっかいだったり。<ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="23" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[23]</anchor-end> RFC 822/MIME と <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">X.400</anchor> などとの対応を規定する <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">MIXER</anchor> などの RFCs では、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC1495</anchor>, <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC2156</anchor>, <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC2157</anchor> が <code class="ABNF">encoded-word</code> に触れています。概要は、 MIME への変換では ASCII 以外があれば <code class="ABNF">encoded-word</code> を使い、 MIME からの変換では相手で表現可能なら decode し、そうでなければ <code class="ABNF">encoded-word</code> のままにするというものです。</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="24" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[24]</anchor-end> <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="23" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;23</anchor-internal> RFC 2157 は、 2.3.1 で、 MIME への変換の際に、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Content-Disposition:欄</anchor>の <code class="ABNF">filename</code> parameter 値 (になるもの) のようなものが ASCII 以外の文字を含んでいたら、引用符で囲む (つまり <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">encoded-word</anchor> にする) か、全部の非 ASCII 文字を疑問符に換えるかしると言っています。</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="25" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[25]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">mailto-URL</anchor> や <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">IMAP</anchor> はそれぞれの <code class="ABNF">encoded-word</code> の扱いについて触れています。</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="27" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[27]</anchor-end> <ruby>空白間隔<rt>ホワイト・スペース</rt></ruby>の扱いとか、まじめにやろうとするとかなり面倒ですね。</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="28" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[28]</anchor-end> 特定の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">charset</anchor> 専用の en/decoder なら簡単に書けるけど、汎用的なのを作ろうとするとかなりひどい。</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="29" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[29]</anchor-end> <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="27" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;27</anchor-internal>-28 頭の体操にはなるが素人にはお勧めできない。</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="34" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[34]</anchor-end> <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="23" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;23</anchor-internal>-24 これは <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">MIME</anchor> の規定に反する虞があるんですが、単なるエラー処理で情報損失を防ぐ措置だと考えればまあ許容範囲なのかな。 (<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC2231</anchor> の方法が RFC 化される前だし。)</li></ul></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="41" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[41]</anchor-end>
<code class="ABNF">encoded-word</code> で符号化された中身は基本的に何でもありなので、実装は勝手な仮定をしてしまわないように注意する必要があります。</p><p>たとえば、 <code class="ABNF">encoded-word</code>
で符号化した中身に<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">改行</anchor>が含まれていることも十分あり得ます。それを想定していない <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">MUA</anchor> だと、たとえば <code class="822"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Subject</anchor></code> の表示の際に画面が乱れる虞があります。
<weak xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">(厳密には RFC 822 では <code xmlns="http://www.w3.org/1999/xhtml" class="ABNF"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">quoted-pair</anchor></code> を使って改行を生で表現できますが、まともに使えるかは不明です。ですから多くの MUA は unfold した欄本体に改行が含まれることを想定していないと思われます。)</weak></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="55" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[55]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 2231</anchor> は将来<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文字コード</anchor>レベルで<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">言語</anchor>の指定ができるようになるので、
その場合はより柔軟に指定できるそちらの方法を <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">MIME</anchor> レベルの指定の方法よりも利用する<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><strong xmlns="http://www.w3.org/1999/xhtml">べき</strong></anchor> <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="51" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;51</anchor-internal></src>
としていましたが、そのような方法は後に取り下げられています。</p><comment-p xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 2482</anchor> を参照。</comment-p></section><section><h1>実装</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="65" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[65]</anchor-end> <cite xml:lang="en">perl-mailutils/Encoder.pod at master · wakaba/perl-mailutils</cite>, <time>2023-04-17T09:00:07.000Z</time> <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://github.com/wakaba/perl-mailutils/blob/master/lib/EncodedWord/Encoder.pod">https://github.com/wakaba/perl-mailutils/blob/master/lib/EncodedWord/Encoder.pod</anchor-external></p></section><section><h1>歴史</h1><ul><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC1342</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC1522</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC2047</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC2184</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC2231</anchor></li><li>RFC errata <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://www.rfc-editor.org/errata.html">http://www.rfc-editor.org/errata.html</anchor-external></li></ul><section><h1>HTTP における <code class="ABNF" xml:lang="en">encoded-word</code></h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="48" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[48]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 2616</anchor> までは <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTTP</anchor> でも一部で <code class="ABNF" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">encoded-word</anchor></code>
が使えることになっていましたが、実際には誰も使っていませんでした。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="58" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[58]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 2231</anchor> の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTTP</anchor> への適応について規定する <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 5987</anchor>
は、 <code class="ABNF" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">encoded-word</anchor></code> の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTTP</anchor> における利用には疑問がある <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="57" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;57</anchor-internal></src> として、
<code class="ABNF" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">encoded-word</anchor></code> の拡張は採用していません。</p><refs xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><ul xmlns="http://www.w3.org/1999/xhtml"><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="57" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[57]</anchor-end> <cite xml:lang="en">RFC 5987 - Character Set and Language Encoding for Hypertext Transfer Protocol (HTTP) Header Field Parameters</cite> (<time>2014-08-10 01:17:43 +09:00</time> 版) <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://tools.ietf.org/html/rfc5987#section-3.3">http://tools.ietf.org/html/rfc5987#section-3.3</anchor-external></li></ul></refs><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="49" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[49]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 723x</anchor> でこの規定は完全に削除され、現在では <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTTP</anchor>
では <code class="ABNF" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">encoded-word</anchor></code> は使われていません。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="50" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[50]</anchor-end> ただし <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTTP</anchor> で <code class="MIME" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">multipart/*</anchor></code> によって <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">MIME実体</anchor>を埋め込む場合、
その<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">実体</anchor>の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">MIMEヘッダー</anchor>では <code class="ABNF" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">encoded-word</anchor></code>
を使うことに (理論上は) なります。しかしこちらもやはり使われていません。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="59" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[59]</anchor-end> <code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Content-Disposition:</anchor></code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ヘッダー</anchor>の
<code class="MIME" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">filename</anchor></code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">引数</anchor>の値として <code class="ABNF" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">encoded-word</anchor></code>
を使う方法は <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Firefox</anchor> で実装され、広く使われていましたが、後に削除されました。</p><comment-p xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><code xmlns="http://www.w3.org/1999/xhtml" class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Content-Disposition:</anchor></code> を参照。</comment-p></section></section><section><h1>めも</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="42" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[42]</anchor-end>
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Thunderbird</anchor> 1.5 には、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Atom</anchor> で題名に <code class="ABNF" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">encoded-word</anchor></code> のような文字列を使うと、
勝手に<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">復号</anchor>してしまうという不具合があります。
(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Thunderbird</anchor> 1.5 は <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Atom</anchor> を <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">822</anchor>
に変換して処理していますが、その際に <code class="822" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Subject</anchor>:</code>
に入れる文字列に <code class="ABNF" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">encoded-word</anchor></code>
のような文字列が含まれていることを想定していないようです。)
(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">名無しさん</anchor> <weak xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">2006-07-22 04:14:28 +00:00</weak>)</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="43" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[43]</anchor-end>
<code class="ABNF" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">encoded-word</anchor></code> が <code class="ABNF" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">quoted-string</anchor></code>
内で認められないのはなぜか?</p><ol><li>元々 <code class="ABNF" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">quoted-string</anchor></code>
は (引用符と <code class="char" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">\</anchor></code> と <code class="ABNF" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">LWS</anchor></code> 以外)
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文字</anchor>は (文字通り) <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文字</anchor>通りの意味を持つというものだから、
<code class="ABNF" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">encoded-word</anchor></code> として解釈させようというのはおかしい。</li><li><code class="ABNF" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">encoded-word</anchor></code> は人間向けで、
機械向けではない。機械向けの場所でも認めるとすると正規化など問題が難しくなる。</li></ol><p>で、 <code class="MIME" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">filename</anchor></code> の場合、
そもそももともとこれはヒントなので、その値を参考にファイル名を決める手段として、
<code class="ABNF" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">encoded-word</anchor></code> のようなものを復号するのもありじゃないの? と <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Keith Moore</anchor> はいってます。</p><comment-p xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Keith Moore</anchor> の <cite xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">Re: rfc2231 implementations?</cite>
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="mid:20060811072422.f7ba81fd.moore@cs.utk.edu">mid:20060811072422.f7ba81fd.moore@cs.utk.edu</anchor-external>
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://permalink.gmane.org/gmane.ietf.rfc822/11802">http://permalink.gmane.org/gmane.ietf.rfc822/11802</anchor-external></comment-p><p>(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">名無しさん</anchor> <weak xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">2006-08-13 07:27:23 +00:00</weak>)</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="44" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[44]</anchor-end>
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">NAS</anchor> (<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 4707</anchor>) は、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Usefor</anchor> が <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC</anchor>
化されるまで、と断りながらも <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">son-of-RFC 1036</anchor> 
と同じ、 <code class="ABNF" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">encoded-word</anchor></code>
が使える (実際にはまったく使われていない) <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ニュースグループ名</anchor>の構文を採用しています。</p><p>(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">名無しさん</anchor>)</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="45" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[45]</anchor-end>
<cite>JavaScript で MIME ヘッダをデコード - bkブログ</cite> (<code>2007-10-07 23:20:17 +09:00</code> 版) <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://0xcc.net/blog/archives/000185.html">http://0xcc.net/blog/archives/000185.html</anchor-external>
(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">名無しさん</anchor>)</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="46" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[46]</anchor-end>
<cite>JavaScript で MIME ヘッダをデコード - bkブログ</cite> (<time>2007-10-07 23:20:17 +09:00</time> 版) <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://0xcc.net/blog/archives/000185.html">http://0xcc.net/blog/archives/000185.html</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="823" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[823]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">fml</anchor> は <code class="822" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Subject:</anchor></code> の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">encoded-word</anchor> をいったん<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">復号</anchor>して
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ISO-2022-JP</anchor> で<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">符号化</anchor>しなおします。このとき <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ISO-2022-JP</anchor> として表せない<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文字</anchor>があると、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">復号</anchor>したまま放置するので、結果として<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文字化け</anchor>することがあります。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="824" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[824]</anchor-end> <cite xml:lang="en">RFC 6857 - Post-Delivery Message Downgrading for Internationalized Email Messages</cite>
( (<time>2013-07-24 10:18:10 +09:00</time> 版))
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://tools.ietf.org/html/rfc6857#section-6">http://tools.ietf.org/html/rfc6857#section-6</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="60" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[60]</anchor-end> <cite xml:lang="en">draft-klensin-encoded-word-type-u-00 - The &quot;U&quot; Encoding for Encoded-Words in Email</cite>
(<time>2016-01-11 02:26:53 +09:00</time> 版)
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://tools.ietf.org/html/draft-klensin-encoded-word-type-u-00">https://tools.ietf.org/html/draft-klensin-encoded-word-type-u-00</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="63" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[63]</anchor-end> <cite xml:lang="ja">メールの送信元を完璧になりすます「Mailsploit」は何が危険か – 無能ブログ</cite>
(<time>2017-12-07 22:39:57 +09:00</time>)
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://blog.cheena.net/2017/12/07/%E3%83%A1%E3%83%BC%E3%83%AB%E3%81%AE%E9%80%81%E4%BF%A1%E5%85%83%E3%82%92%E5%AE%8C%E7%92%A7%E3%81%AB%E3%81%AA%E3%82%8A%E3%81%99%E3%81%BE%E3%81%99%E3%80%8Cmailsploit%E3%80%8D%E3%81%AF%E4%BD%95%E3%81%8C/">https://blog.cheena.net/2017/12/07/%E3%83%A1%E3%83%BC%E3%83%AB%E3%81%AE%E9%80%81%E4%BF%A1%E5%85%83%E3%82%92%E5%AE%8C%E7%92%A7%E3%81%AB%E3%81%AA%E3%82%8A%E3%81%99%E3%81%BE%E3%81%99%E3%80%8Cmailsploit%E3%80%8D%E3%81%AF%E4%BD%95%E3%81%8C/</anchor-external></p></section></body></html>