作者: davi
日時: 2005/10/31(22:24)
機械伯爵さん  <  こん??は でび@逃避中 です

On Mon, 31 Oct 2005 17:11:49 +0900 (JST)
kikwai@... (機械伯爵) wrote:

>  よくよく調べてみたら、
> 
> <符号化文字集合>
> ASCII … 半角英数字・半角記号 (a,A,0,!,@,#)
> JIS X 0201 … 半角英数字・半角カナ
> JIS X 0208 … ひらがな・かたかな・漢字・全角記号
> JIS X 0212 … 補助漢字
> JIS X 0213 … さらに拡張

0208を拡張したのが0213です。
0212は0208と非重複になるように文字採録されて
いますが0213とは別の体系です。

んで、0212は10646に登録されたので、Unicode文字
として使用できます。

ところが、0213で拡張された文字と、0212に既に
登録されていた文字で、一部重複がある、と。

>Unicode1.0,2.0

>   UCS-4

UCS-4は通常、UCS2との互換の絡みで説明することが多い
ので、一般には「UCS-2の先頭に0000をつけた32ビットの
コード」と説明されますがが、実際には31ビットしか使わ
ないようです。

つまり、ISO/IEC 10646における UCS-4 は1バイト32ビット
で表現されるけど、そのうち第1オクテットは00-7Fの7ビッ
ト分だけを利用し、第2オクテット〜第4オクテットは00-FF
の8ビット全部を利用することになっているそうです。
したがって第1オクテット、80-FFまでの1ビット分は使用
しない、と。

ASCIIとカタカナしか使えなかったJIS X 0201を、8ビット
透過を利用して拡張したShiftJISと同じような仕組みと
同じようにモードを持たせたものなんだそうな…。

> <エンコーディング>

> UTF-16(?)

16bitコードを維持しつつ収録字数を拡張する方法として
編み出されたのがUTF-16という符号化方式(RFC 2781参照)。

Unicodeに以前から収録されていた文字は16bitで一文字
を表し、拡張部分は32bitで一文字を表す。
この組み合わせをサロゲート・ペア(surrogate pair)と呼ぶ。

同じ文字種(漢字)でも、バイト数と文字数が不一致に
なるわけですな。

>  でも、テキストエディタが対応してなかったりして(笑)

EmEditorの最新β版がUTF-16に対応したらしいです。
0213はUnicodeとしてなら使うだろうけど、JISとしては使う
気にはなりませんなぁ。
Sortで並べ替えすると第一水準が漢字のヨミの五十音順、
第二水準が部首と部首内画数順、その隙間に0213の増補分が
挟み込まれて…ってなるわけですから、扱いづらいでしょう。

ユーザ定義テーブルによるSortツールって、スクリプト言語で
作れるんでしょうかね? 速度は遅くても良いとして…。

でび  http://homepage1.nifty.com/davi/