Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

quoted-printable(クォーテッド・プリンタブル)とは | 意味や読み方など丁寧でわかりやすい用語解説

quoted-printable(クォーテッド・プリンタブル)の意味や読み方など、初心者にもわかりやすいように丁寧に解説しています。

作成日: 更新日:

読み方

日本語表記

クォーテッド・プリンタブル (クォーテッドプリンタブル)

英語表記

quoted-printable (クォーテッド・プリンタブル)

用語解説

quoted-printableは、電子メールやその他のテキストベースの通信プロトコルにおいて、7ビットASCII文字セットの範囲外の文字(非ASCII文字)や、一部のASCII特殊文字を安全に転送するためのエンコーディング方式である。これはMIME(Multipurpose Internet Mail Extensions)規格の一部として定義されており、主にメッセージ本文やヘッダフィールドの値に多言語の文字(日本語、ドイツ語のウムラウトなど)が含まれる場合に利用される。インターネットが黎明期であった頃のメールシステムは、7ビットASCII文字しか正しく扱えない設計であったため、そのまま非ASCII文字を送信すると文字化けやデータ破損の原因となる可能性があった。quoted-printableは、このような環境下でも多言語のテキストを安全かつ確実に送受信するために開発された手法の一つである。

quoted-printableエンコーディングの基本的な仕組みは、印字可能なASCII文字の多くはそのまま保持し、特定の文字のみを特殊な形式に変換することにある。具体的には、英数字や句読点、一般的な記号(!, @, #, $, (, ), +, -, _, .など)といったASCII文字のうち、quoted-printableエンコーディングにおいて特別な意味を持たないものは、エンコードせずに元の文字のまま保持される。これは、エンコードされた結果がある程度人間が読める状態(human-readable)であることを意図しているためである。

一方、エンコードの対象となるのは主に以下の三種類の文字である。 まず、7ビットASCIIの範囲外の文字、つまり128以上の文字コードを持つ文字である。これらは、その文字のバイト表現を16進数で2桁の形式に変換し、その前に等号(=)を付与する形式でエンコードされる。例えば、UTF-8で表現される日本語の「あ」はバイト列ではE3 81 82となるため、quoted-printableでは=E3=81=82とエンコードされる。文字コードセット(例えばUTF-8)に基づいてバイト列に変換された後、各バイトがこの=HH形式でエンコードされる。 次に、quoted-printableエンコーディングにおいて特別な意味を持つ一部のASCII文字もエンコードの対象となる。代表的なものが等号(=)そのものである。等号はエンコーディングの際のエスケープ文字として使われるため、もし本文中に等号が存在した場合は、それ自身が=3Dとエンコードされることで、エスケープ文字としての機能との混同を防ぐ。 最後に、行の末尾に位置する空白文字(スペース)やタブ文字もエンコードの対象となる場合がある。これは、一部のメールシステムがこれらの文字を行末から自動的に削除してしまう可能性があるためである。スペースは=20、タブは=09とエンコードされることで、受信側で意図しない変更が行われるのを防ぎ、元のテキスト構造を正確に維持する。

quoted-printableには、エンコードされた行の長さに関する制限も存在する。MIMEの仕様を定めたRFC 2045では、エンコードされた行の長さは最大で998文字とされているが、古いメールシステムとの互換性を考慮し、一般的には76文字以下にすることが推奨される。もしエンコードされたデータがこの長さを超える場合、行は「ソフト改行」という形で分割される。ソフト改行は、行の終わりに等号(=)を付与することで示され、これは次の行が前の行の論理的な続きであることを意味する。受信側のシステムは、このソフト改行の等号を検出すると、そこで実際の改行処理を行わずに次の行のデータを前の行に連結して解釈する。これにより、送信時の行長制限を遵守しつつ、元のテキストが改行によって不自然に分割されることなく、正しく再構築される。

quoted-printableの主な利点は、英語などのアルファベット主体のテキストで、たまに非ASCII文字(例えば、フランス語のアクセント付き文字やドイツ語のウムラウトなど)が出現するような場合に、高い可読性を保ちつつエンコードできる点にある。エンコードされていない部分は元のテキストとほとんど変わらないため、エンコードされたメッセージを直接見ても内容がある程度推測可能である。また、バイナリデータと異なり、テキストの行構造を維持するのに適している。

しかし、欠点も存在する。非ASCII文字が非常に多く含まれるテキスト、あるいはバイナリデータ全体をエンコードする場合には、各バイトが3文字(=HH)に膨らむため、データサイズが元の約3倍になる可能性があり、エンコーディング効率が非常に悪い。このような大量の非ASCII文字やバイナリデータを扱う場合には、Base64エンコーディングの方が一般的に効率的である。Base64は、3バイトのデータを4文字に変換するため、データサイズの増加は約33%に抑えられる。そのため、quoted-printableは主にテキストデータ、特に大部分がASCII文字で構成されているが一部に非ASCII文字を含む場合に選択されるエンコーディング方式である。

システムエンジニアを目指す上でquoted-printableを理解することは、特に多国語対応のシステムや、メール送受信、Web APIにおけるデータ表現などを扱う際に重要となる。例えば、メールの送受信において文字化けが発生した場合、その原因がエンコーディングの問題である可能性を疑い、Content-Transfer-Encodingヘッダの値や、エンコードされた本文の内容を適切に確認するための基礎知識となる。

関連コンテンツ

quoted-printable(クォーテッド・プリンタブル)とは | 意味や読み方など丁寧でわかりやすい用語解説 | いっしー@Webエンジニア