- 履歴一覧
- ソース を表示
- 履歴 を表示
- Encoding は削除されています。
- 1 (2007-06-04 (月) 20:32:52)
- 追加された行はこの色です。
- 削除された行はこの色です。
[[FrontPage]] > [[memo]] > [[Encoding]]
* 文字コード変換のヒント [#a7186437]
** 文字空間の大きさ [#r64d97a8]
*** ISO646(ASCII) [#ac2764bf]
7ビット文字コードである。よって ASCII と言いながら、0x80〜0xff が表に入るのはおかしい。
0x00〜0x1f: コントロールコード(文字ではない)
0x20: [space]
0x21〜0x2f: !"#$&'()*+,-./
0x30〜0x39: 0-9
0x3a〜0x40: :;<=>?@
0x41〜0x5a: A-Z
0x5b〜0x60: [\]^_`
0x61〜0x7a: a-z
0x7b〜0x7e: {|}~
0x7f: [DEL]
*** JIS & EUC [#b5417a78]
2バイトの符号値は、第1、第2バイトともに
JIS : 0x21〜0x7E
EUC : 0xA1〜0xFE
の 94個分である。
ただ、JIS X 0208 ではこの範囲の符号値を直接規定していない。
第1バイトを区番号といい、第2バイトを点番号という。
よって文字空間のサイズは、
94x94 = 8836
である。
*** Shift JIS [#d189a1ac]
シフト JIS は、10進数の 129〜159、224〜239
(0x81〜0x9F(31個)、0xE0〜0xEF(16個))
の範囲のバイトが現れると 2バイトモードが開始される。
続く第2バイトは 64〜126、128〜252
(0x40〜0x7E(63個)、 0x80〜0xFC(125個))
の範囲でなければならない。
よって文字空間のサイズは、
47x188 = 8836
である。
第1バイトの範囲は、英数字(ASCII、0x21〜0x7E)や 1バイト仮名
(半角カナ、0xA1〜0xDF)と重複しないように配置されている。
JISコードとは簡単なアルゴリズムで相互変換が可能である。
** ISO-2022 の話 [#mc19bcf8]
http://euc.jp/i18n/charcode.ja.html さんからの抜粋です。ISO-2022 について詳しく解説してあって、とても勉強になります。
*** ISO-2022-JP [#w781edc7]
いわゆる JIS コードである。ISO-2022 7bit 系。
-G0 に JIS X 0201 ローマ文字(または ASCII)を指示
-G1 に JIS X 0201 カタカナを指示
-G0 を GL に呼び出す
-JIS X 0208 漢字(および他の文字集合)は G0 に指示して使用
-7ビット環境では、JIS X 0201 カタカナは、G1 を GL に呼び出すか、直接 G0 に指示して使用
-シングルシフトは使わない
文字集合は ISO-2022-JP では ASCII、X 0201 ローマ文字、X 0208 (旧/新) に限定
*** EUC-JP [#c9c8f962]
UNIX などでおなじみ。
-G0 に ASCII(または JIS X 0201 ローマ文字)を指示
-G1 に JIS X 0208 漢字を指示
-G2 に JIS X 0201 カタカナを指示
-G3 に JIS X 0212 補助漢字を指示
-G0 を GL に、G1 を GR に呼び出す
-G2 と G3 はシングルシフトで使用
-エスケープシーケンス・ロッキングシフトは使わない
*** Shift JIS [#dfb02176]
ISO-2022 に準拠していません。