UTF-7
読み:ユーティーエフ-セヴン
外語:UTF-7: Unicode Transformation Format-7
Unicode
を7ビット文字で表現できるように変換したもの。
RFC 2152
(旧
RFC 1642
)で定義されている。
目次
概要
特徴
文字集合
符号化方式
修正base64
概要
具体的な変換ロジックはMIMEの
base64
とほぼ同等である(一部修正されている)。
RFC 2152
は「Unicodeのメールセーフ変換フォーマット」と題されており、修正base64を使用という点からも分かるように、これは
電子メール
でUnicode文書を安全に送受信するために考案された。
いわゆる
文書ファイル
などとして使うことを想定したものではないが、ごく希に使う事もあるらしい。
Webブラウザー
のFirefox 3、Internet Explorer、ChromiumはUTF-7のHTML文書の表示に対応している。
Opera
でも対応しているらしいが、使用方法は不明である。
特徴
文字集合
集合D (直接符号化文字) [A-Za-z0-9'(),-./:?]
集合O (任意直接文字) [!"#$%&*;<=>@[]^_`{|}]
集合B (修正base64)
base64
文字集合 (=を除く)
符号化方式
規則1
集合Dと集合Oの文字は、そのまま1オクテットの
ASCII
文字として符号化できる。 但し、集合Oの文字は環境によっては問題が生じることもあるので、その場合は他の文字と同様の方法で符号化する。
規則2
任意のUnicode文字は、
UTF-16BE
で表現し、それを修正base64で符号化する。 base64は、8ビット3文字を6ビット4文字に変換する。UTF-16BEは16ビットなので、Unicode文字1.5文字を集合Bの4文字に変換する。
前に+を置き、集合Bに無い文字(CRやLFなどを含む)か、-が現われるまで続く。-が現われた場合は、その-を捨てる。
言い換えると、修正base64で符号化した前後に+と-を付けるが、この符号列の直後が集合Bに含まれない文字の場合は最後の-を省略できる。
エスケープ文字である+そのものは、+-として表わす。
規則3
一般的な制御文字、SP(U+0020)、HT(U+0009)、LF(U+000a)、CR(U+000d)は、そのまま1オクテットのASCIIで表現される。
古い
RFC 1642
は、集合Oの`を正しく記載しているが、新しい
RFC 2152
は'と誤記している(ASCII文字番号は`のまま)。安全のため、'と`は双方ともに集合Oとして扱うのも一つの方法であろう
修正base64
符号化は、基本的にはbase64であるが、
パディング
の=は使わない。
余ったビット0や、NUL(U+0000)として扱えるものは、それを捨てる。
つまりUTF-7ではNULは表現できないことになる。
再検索