UTF-7

出典: フリー百科事典『ウィキペディア(Wikipedia)』
移動: 案内検索

UTF-7(ユーティーエフなな、ユーティーエフセブン)はISO/IEC 10646(UCS)とUnicodeで使える7ビット符号単位の文字符号化形式及び文字符号化スキーム

7ビットでしか送信できない制限があるプロトコル上のメールやニュースなどの環境で、その体系上でUnicodeのメールを送信可能にするために作られた規格である。

現在では正しく実装されていないアプリケーション上でセキュリティー上の脆弱性を発生させることがあることから、あまり使われなくなっている。

IMAP4では、UTF-7を変更した規格である修正UTF-7の規格があり、この規格は2010年代現在においては頻繁に使用される。

機能[編集]

  • 62のアルファベットと9の記号(' ( ) , - . / : ?)はそのまま表記する。
  • それ以外の文字はUTF-16ビッグエンディアンで符号化し、修正BASE64で符号化する。[1]
  • BASE64の文字の前に「+」後ろに「-」を置く。
  • 「+」の文字自体は「+-」で表現する。

[編集]

  • Hello, World!」は「Hello, World!」とそのまま表記できる。
  • 1 + 1 = 2」は「1 +- 1 = 2」になる(「+」は「+-」になる)。
  • £1」は「+AKM-1」になる。ポンド記号はU+00A3はBase64で表記する。あまった2バイトは0で埋められる。
Hex digit 0 0 A 3  
Bit pattern 0 0 0 0 0 0 0 0 1 0 1 0 0 0 1 1 0 0
Index 0 10 12
Base64-Encoded A K M

変換方法[編集]

エンコード[編集]

「£†」(U+00A3 U+2020)の場合

0x00A3 0000 0000 1010 0011 UTF-16から2ビットで表現
0x2020 0010 0000 0010 0000
0000 0000 1010 0011 & 0010 0000 0010 0000 0000 0000 1010 0011 0010 0000 0010 0000 繋げる
0000 0000 1010 0011 0010 0000 0010 0000 000000 001010 001100 100000 001000 00 6ビットごとの区切りで分ける
000000 001010 001100 100000 001000 00 000000 001010 001100 100000 001000 000000 最後のビットを6ビットになるように埋める
000000 001010 001100 100000 001000 000000 AKMgIA base64の文字としてエンコードする

デコード[編集]

AKMgIA 000000 001010 001100 100000 001000 000000 base64の文字としてエンコードする
000000 001010 001100 100000 001000 000000 0000000010100011 0010000000100000 0000 16ビットごとに分ける
0000000010100011 0010000000100000 0000 0000000010100011 0010000000100000 最後の0だけのビットは削除
0000 0000 1010 0011 0x00A3 ≡ 16310 16進数の文字としてUTF-16の文字とする

修正UTF-7[編集]

修正UTF-7(Modified UTF-7)はIMAP4で多言語のフォルダ名(ディレクトリ名)を使用するために用いられる規格である。

  • 「&」以外のASCII文字はそのまま表記する。
  • それ以外の文字はUTF-16ビッグエンディアンで符号化し、修正BASE64で符号化する。
  • BASE64の文字の前に「&」後ろに「-」を置く。
  • 「&」の文字自体は「&-」で表現する。

関連項目[編集]

出典[編集]

脚注[編集]

  1. ^ 修正BASE64とは=を入れないBASE64エンコーディング形式である。