クオーテッド‐プリンタブル【Quoted-Printable】
Quoted-Printable
Quoted-Printableとは、電子メールの送受信の際に用いられるデータの変換方式のひとつで、本文に用いられる8ビット文字を、7ビットのデータであるASCIIコードに変換する方式のことである。
電子メールシステムは、基本的に7ビットのデータで表現されるキャラクターコードを使用することものとして設計されている(8ビットで1バイトを成し、ASCIIは1バイト文字に含まれるが、実際には1バイトのうち7ビット目までを用いて表現されている。そして、電子メールシステムは、1バイトのうち8ビット目までを使用する場合が想定されていない)。そのため、Shift JISやEUCといった漢字コードや、あるいは画像や音声などのデータがコード化されたものであるバイナリーコードなどは(2バイト文字であれば、その各バイトの8ビット目までを使用するために)電子メールシステムでは直に送信するデータとして用いることができない。
8ビット文字の電子メールでの送受信を可能とするには、送信者の側であらかじめデータを送信可能なコードに変換(エンコード)し、受信する側は再度そのデータを復元(デコード)すればよい。そのための変換方式のひとつがQuoted-Printableとなる。Quoted-Printableでは、送信するデータのうち文字としてそのまま送信できるものはそのまま送信され、それができないデータについては「=」と16進数とをあわせたコード(例えば「=D2=BD=OA」といった形式)に変換される。データ量は実質増加するため、転送効率は低下するが、それ以外の処理にかける時間を最小限に抑えることができる。
同様の変換方式としては他にもBase64やuuencodeなどといった方式があるが、中でも現在はBase64が主流として用いられている。なお、日本語ではJISコードが8ビット目を使用しないコード方式をとっており、7ビットで送信するという電子メールシステムに直に対応するため、電子メールにおける日本語コードとして標準的に用いられている。
Quoted-printable
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2024/06/25 00:46 UTC 版)
Quoted-printable(QP encodingとも呼ばれる)は、印字可能な文字(例えば、英数字や等号「=
」)を使用した符号化方式であり、8ビットデータを7ビットデータパスで転送するためのものである。インターネット電子メールで使用できるようにするため、Content-Transfer-Encoding として定義されている。
概要
基本的なインターネット電子メール転送プロトコルであるSMTPでは、ASCII文字のみがサポートされている(英: 8-bit clean)。MIMEでは、電子メールでASCII文字以外の情報を送信するためのメカニズムを定義している。これには、文字列中に英語で使われない文字が含まれる場合に、ASCII以外の文字符号化方式を使用して扱うことが含まれる。しかしながら、これらの文字符号化方式ではASCII範囲外の値が頻繁に使用されるので、電子メールで適切に使用できるようにするためには、さらに符号化する必要がある。Quoted-printable符号化方式は、任意のバイト値を一連のASCII文字に変換するための方式である。この符号化方式は可逆変換であり、符号化されたバイト値が表す元のバイト値、つまり非ASCII文字に復元することができる。
Quoted-printableとBase64は、2つの基本的な MIME Content-Transfer-Encoding である。入力文字列のほとんどがASCII文字である場合は、Quoted-printableで符号化した結果をほとんどそのまま読むことができ、データサイズも小さくなる。一方、入力文字列のほとんどがASCIIではない場合は、Quoted-printableを使用してもそのまま読むことはできず、サイズ効率も非常に悪い。Base64はそのまま読める方式ではないが、どのようなデータに対してでもサイズ効率は一定である。それで、バイナリー形式データやラテン文字ではない言語に対しては、Base64を選択するのが道理にかなっている。
電子メールクライアントによっては、Quoted-printable文字列を復号するときに、行末にドットがあると誤動作する場合がある。
Quoted-printableの符号化
任意の8 ビットバイト値は、3文字に符号化してよい。これは、「=
」の後ろにそのバイトの数値を表す2桁の16進数文字(0
から9
またはA
からF
)を付けたものである。例えば、US-ASCIIの改ページ(NP
)文字(10進数で12)は「=0C
」と表される。また、US-ASCIIの等号(10進数で61)は「=3D
」になる。印字可能なASCII文字以外のすべての文字、および改行文字はこのようにして符号化しなければならない。
すべての印字可能なASCII文字(10進数で33から126)はそのまま変換なしに表してよい。ただし、「=
」(10進数で61)だけは例外である。
ASCIIのタブ文字(10進数で9)およびスペース文字(10進数で32)はそのまま変換なしに表してよいが、行末に現れた場合だけは例外である。これらの文字が行末に現れた場合は「=09
」(タブ)および「=20
」(スペース)に符号化されることになる。
テキスト中で行の終わりを意味するバイト列は、MS-DOS や Microsoft Windows では「CRLF」、UNIX や Linux では「LF」、第9版までの古い MacOS や Microware OS-9 では「CR」であるなど、システムによって異なるが、それらはまとめて「改行」と呼ばれる。符号化処理中のテキストの改行は Quoted-Printable 符号では、それがテキストデータであることを前提とする場合には、システムの違いに無関係に ASCIIの「CRLF」の並び対応させる決まりである。 Quoted-Printable 符号の「CRLF」をテキストに戻す場合には、システムがそれぞれの改行を意味するバイト列に復号しなければならない。
符号化前(古いMacOS など) | Quoted-printable 符号 | 復号後(UNIX など) |
---|---|---|
Sell in MayCRand go away.CR
|
Sell in MayCRLFand go away.CRLF
|
Sell in MayLFand go away.LF
|
符号化処理するデータの中の「CR」を複合後も「CR」にさせたり、符号化処理するデータの中の「LF」を複合後も「LF」にさせたい場合には、 Quoted-Printable 符号化時には、それぞれ、「CR」は「=0D
」に、「LF」は「=0A
」に符号化しなければならない。
Quoted-printable で符号化したデータの行は、76文字を超えてはならない。符号化した文字列を変換せずにこの要件を満たすため、必要に応じてソフト改行 が追加される。ソフト改行は符号化後の行末に「=
」が置かれたものであり、復号した文字列には改行は現れない。
参照
quoted-printable
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2020/03/24 07:00 UTC 版)
「Multipurpose Internet Mail Extensions」の記事における「quoted-printable」の解説
US-ASCIIに存在する文字はそのまま使い、存在しない文字などを =HHのような形で符号化する。ここで、HH には文字のコードを大文字の16進数で指定する。その他、以下のような規則がある。 = 自体は =3D となる。 行末に空白がある場合、伝送の過程で失われるおそれがあるため、=20 としてこれを保存する。 エンコードの過程で行を折り返す(改行を挿入する)場合、= と改行の組み合わせを挿入し、もともとあった改行と区別できるようにする。 ヨーロッパ系の言語では、多くの文字がUS-ASCIIと同一で一部に独自の文字を使っているものが多い。この場合に quoted-printable を用いると、US-ASCIIはそのままの文字を使用しているので、データがほとんど大きくならず、quoted-pritable 対応プログラムを使わなくても、大体の内容が読めるという利点がある。しかし通常のバイナリデータや、Shift_JISやEUC-JPといった仮名漢字などの非ヨーロッパ系の文字のテキストデータに quoted-printable を適用した場合は、base64を使用した場合よりも大幅にデータが大きくなる。 詳細は「Quoted-printable」を参照
※この「quoted-printable」の解説は、「Multipurpose Internet Mail Extensions」の解説の一部です。
「quoted-printable」を含む「Multipurpose Internet Mail Extensions」の記事については、「Multipurpose Internet Mail Extensions」の概要を参照ください。
固有名詞の分類
- QuotedPrintableのページへのリンク