|
UCS と Unicode
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| △ |
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
UCS ( Universal Multiple-Octet Coded Character Set ) は全ての言語の
文字を一つの ( 統一された ) コードに割り当てるものです。
コードテーブルは 0 〜 0x7FFFFFFF と、約21億文字分
有ります。
1文字あたり4バイト使用するため UCS-4 とも呼ばれます。
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Unicode は UCS の 0 〜 0x10FFFF ( 約 111 万文字 ) の部分をいいます。 使います、と書きましたが実際は UCS と Unicode は策定しているグループが異なります。 UCS を策定しているグループが下位部分を採用したことから互換性が発生し、 サブセット(部分集合)レベルでは同一とみなせるのが現状です。
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
UCS-4 の範囲では UCS-4 ( UTF-32 とも呼ばれます )
と UTF-8 の2種類のコーディングが可能です。
また、標準では有りませんが、
UTF-9 という
コーディングもあります。 Unicode の定義範囲に限ればこれに加えて UTF-16 と UTF-7 の2種類が使えます。 ( UCS-4 を使うことは無いと思いますが‥‥ ) Unicode の定義範囲内のうち、 0 〜 0xFFFF だけの ( つまり当初の Unicode の定義 ) 範囲を UTF-16 で表現したものを UCS-2 と呼びます。 通常 Unicode と言ったらこのエンコーディングを指します。
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Unicode についてもっと詳しく知りたい方はオフィシャルページ
http://www.unicode.org/
や各種変換表がダウンロードできる ftp サーバ
ftp://ftp.unicode.org/Public/
へどうぞ。 機種依存文字の変換表は今田が作ったものが Shift-JIS のページにあります。 opengroup のページ には Unicode.org とは違う変換表があります. 同サイトには Unicode とユーザ定義文字・ベンダ定義文字に関する問題点と解決策 なるページがあります.
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| △ |
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
UCS-4 のコード番号そのままのコーディングで、1文字に付き4バイト使用します。
UTF-32 は UNICODE のコーディングですが UCS-4 と同じとみても、問題はないでしょう。
特徴としては1文字が4バイトに固定されていることで、唯一の固定長
のコーディングといえます。( UTF-16 は 0x10000 〜 0x10FFFF を
表示する場合 16 ビット×2となり、固定長といえません。)
このコーディングではバイトオーダーを指定することが出来ます。
UCS では 0x0000FEFF ("BYTE ORDER MARK" or "BOM")
がバイトオーダー指定文字として定義されています。
なお,0x0000FEFF は "ZERO WIDTH NON-BREAKING SPACE"
( 幅0でこの文字の後にブレイク ( 画面に収まりきらない場合に改行
文字無しに改行する場合の改行を言う ) なしのスペース ) という意味
としても定義されています。
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
例を挙げます。「今日は」という文字列をコーディングする場合を
考えます。コード番号は 「今」は 0x00004ECA 、
「日」は 0x000065E5 「は」は 0x0000306F です。
バイトオーダー別文字列の出力結果を次に示します。
結果にはバイトオーダー指定文字が含まれます。
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| △ |
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
UTF-8 は次のようなエンコーディングになっています。
u1-u7はそれぞれ8ビット値です。 UTF-8 のエンコーディング方法
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
UTF-8の特徴としてエンコード後もエンコード前と同じ辞書順
を保つことができる事が挙げられます。 また、文字の先頭バイトを簡単に検出できるという特徴もあります。 ( (バイト) & 0xC0 != 0x80 なら先頭バイト ) エンコーディング方法を見るとわかりますが、Unicode にも 適応できます。
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
最後に簡単な例を挙げます。
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| △ |
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
UTF-16 は1文字を16ビットであらわす Unicode の標準的なコーディング
方法です。
( UTF-16 はこれに加えて 0x10000-0x10FFFF の範囲を以下で示す方法で
32 ビットであらわします。 )
UCS-4 のエンコードは出来ません。 表現できる文字の範囲を 0 〜 0xFFFF までに限った場合は UCS-2 と呼ばれます。
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
UCS-2 / UTF-16 のエンコーディング方法
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| △ |
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
電子メールで Unicode 文章を交換するためのコーディングです。
電子メールでは1バイトのうち8ビット目は使用できません。
また、電子メールのサブジェクト(メールの件名 ) の部分では
さらに文字が限定されます。
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
今田の勉強不足のせいで、電子メールをUnicodeで書く時のヘッダの
書き方
( ヘッダ情報にこのメールが UTF-7 で書かれてますよという情報を
どうやって指定するか )
がわかりません。
ここに書かれてある情報だけでは Unicode で書かれたメールを送る
ことはできませんのであしからず。
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
UTF-16 から UTF-7 へのエンコーディング方法
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
説明がいいかげんなので例を挙げてフォローします。 アーチスト まず、UTF-16(リトルエンディアン) に変換すると次の通り。
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
BASE64 部を6ビットずつ区切り、UTF-7に変換すると
次のようになります。
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
例のエンコーディング結果
+MKIw/DDBMLkwyA- コーディング方法はこれ以外にも多数あります。 以下例を挙げます。
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
左上の例は BASE64 から抜けるのに '-' を使わず、改行(0x0A)
で代用したものです。 右上の例は "の好きな" の部分について一文字ごとに BASE64 から抜けています。 左下の例のように A-Z, a-z, 0-9, +, / をBASE64で表示しても かまいません。
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Copyright (C) 1999-2004 いまでぃ
All Rights Reserved. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
本ホームページに掲載・使用されている全ての画像及び文章の無断使用・転載を禁止します。 本ホームページの内容について いまでぃ は一切保証いたしません。 本ホームページはリンクフリーです。 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||