|
|
|
|
文字コードまめ知識
| |
|
| |
|
| |
| △ |
| |
|
表 1 : エスケープシーケンス表
|
シーケンス |
意味 |
| 0x0F | SI |
GL <- G0 |
| 0x0E | SO |
GL <- G1 |
| 0x1B 0x6E | ESC n |
GL <- G2 |
| 0x1B 0x6F | ESC o |
GL <- G3 |
| 不可 |
GR <- G0 |
| 0x1B 0x22 | ESC " |
GR <- G1 |
| 0x1B 0x7D | ESC } |
GR <- G2 |
| 0x1B 0x7C | ESC | |
GR <- G3 |
| |
| 0x1B 0x4E | ESC N (SS2) |
GL <- G2 (一文字のみ) |
| 0x1B 0x4F | ESC O (SS2) |
GL <- G3 (一文字のみ) |
| 0x8E | SS2 |
GR <- G2 (一文字のみ) |
| 0x8F | SS3 |
GR <- G3 (一文字のみ) |
| |
| 0x1B 0x28 [F] | ESC ( [F] |
G0 <- 1バイト94領域文字 |
| 0x1B 0x24 0x28 [F] |
ESC $ (注 [F] |
G0 <- 多バイト94領域文字 |
| 不可 |
G0 <- 1バイト96領域文字 |
| 不可 |
G0 <- 多バイト96領域文字 |
| 注
ここで [F] が 0x40-0x42 なら ( を省略 |
| 0x1B 0x29 [F] | ESC ) [F] |
G1 <- 1バイト94領域文字 |
| 0x1B 0x24 0x29 [F] | ESC $ ) [F] |
G1 <- 多バイト94領域文字 |
| 0x1B 0x2D [F] | ESC - [F] |
G1 <- 1バイト96領域文字 |
| 0x1B 0x24 0x2D [F] | ESC $ - [F] |
G1 <- 多バイト96領域文字 |
| |
| 0x1B 0x2A [F] | ESC * [F] |
G2 <- 1バイト94領域文字 |
| 0x1B 0x24 0x2A [F] | ESC $ * [F] |
G2 <- 多バイト94領域文字 |
| 0x1B 0x2E [F] | ESC . [F] |
G2 <- 1バイト96領域文字 |
| 0x1B 0x24 0x2E [F] | ESC $ . [F] |
G2 <- 多バイト96領域文字 |
| |
| 0x1B 0x2B [F] | ESC + [F] |
G3 <- 1バイト94領域文字 |
| 0x1B 0x24 0x2B [F] | ESC $ + [F] |
G3 <- 多バイト94領域文字 |
| 0x1B 0x2F [F] | ESC / [F] |
G3 <- 1バイト96領域文字 |
| 0x1B 0x24 0x2F [F] | ESC $ / [F] |
G3 <- 多バイト96領域文字 |
| |
|
表 2 : 文字コード別 [F] の定義
|
1バイト系94領域 |
[F] |
| ISO-646 英国版 |
A |
| ISO-646 ( US-ASCII ) |
B |
| JISX0201カナ |
I |
| JISX0201ラテン |
J |
|
多バイト系94領域 |
[F] |
| JISX0208-1978 |
@ |
| GB 2312-80 (簡体字) |
A |
| JISX0208-1983(1990,1997も) |
B |
| KS C 5601-1987 (Hangle) |
C |
| JISX0212-1990 (拡張漢字) |
D |
| CNS 11643-1986-1 〜 7 (繁体字) |
G〜M |
|
1バイト系96領域 |
[F] |
| ISO-8859-1 | A |
| ISO-8859-2 | B |
| ISO-8859-3 | C |
| ISO-8859-4 | D |
| ISO-8859-5 | L |
| ISO-8859-6 | G |
| ISO-8859-7 | F |
| ISO-8859-8 | H |
| ISO-8859-9 | M |
| ISO-8859-10 | X |
| |
|
| |
| △ |
| |
|
表 : US-ASCII コード表
| |
|
ISO-646 は 0x21-0x7E の部分だけをいいます。
表中の灰色部分は各国版 ISO-646 で別の文字への入れ替えが許されている領域です。
日本版である JISX0201ラテンでは 0x5C(バックスラッシュ) が
円記号、0x7E(チルダ) がオーバーラインに置き換わっています。
( 下の表を参照 )
| |
|
| |
| △ |
| |
|
表 : JISX0201 コード表
 |
 |
| ラテン | カナ |
| |
|
| |
| △ |
| |
|
表 : C0 集合
| 番号 |
略 |
意味 |
番号 |
略 |
意味 |
| 0x00 | NUL | NULL |
0x10 | DLE | DATA LINK ESCAPE |
| 0x01 | SOH | START OF HEADING |
0x11 | DC1 | DEVICE CONTROL ONE |
| 0x02 | STX | START OF TEXT |
0x12 | DC2 | DEVICE CONTROL TWO |
| 0x03 | ETX | END OF TEXT |
0x13 | DC3 | DEVICE CONTROL THREE |
| 0x04 | EOT | END OF TRANSMISSION |
0x14 | DC4 | DEVICE CONTROL FOUR |
| 0x05 | ENQ | ENQUIRY |
0x15 | NAK | NEGATIVE ACKNOWLEDGE |
| 0x06 | ACK | ACKNOWLEDGE |
0x16 | SYN | SYNCHRONOUS IDLE |
| 0x07 | BEL | BELL |
0x17 | ETB | END OF TRANSMISSION BLOCK |
| 0x08 | BS | BACKSPACE |
0x18 | CAN | CANCEL |
| 0x09 | HT | HORIZONTAL TABULATION |
0x19 | EM | END OF MEDIUM |
| 0x0A | LF | LINE FEED |
0x1A | SUB | SUBSTITUTE |
| 0x0B | VT | VERTICAL TABULATION |
0x1B | ESC | ESCAPE |
| 0x0C | FF | FORM FEED |
0x1C | FS | FILE SEPARATOR |
| 0x0D | CR | CARRIAGE RETURN |
0x1D | GS | GROUP SEPARATOR |
| 0x0E | SO | SHIFT OUT |
0x1E | RS | RECORD SEPARATOR |
| 0x0F | SI | SHIFT IN |
0x1F | US | UNIT SEPARATOR |
| |
|
表 : C1 集合
| 番号 |
略 |
意味 |
番号 |
略 |
意味 |
| 0x80 | | |
0x90 | DCS | DEVICE CONTROL STRING |
| 0x81 | | |
0x91 | PU1 | PRIVATE USE ONE |
| 0x82 | BPH | BREAK PERMITTED HERE |
0x92 | PU2 | PRIVATE USE TWO |
| 0x83 | NBH | NO BREAK HERE |
0x93 | STS | SET TRANSMIT STATE |
| 0x84 | | |
0x94 | CCH | CANCEL CHARACTER |
| 0x85 | NEL | NEXT LINE |
0x95 | MW | MESSAGE WAITING |
| 0x86 | SSA | START OF SELECTED AREA |
0x96 | SPA | START OF SELECTED AREA |
| 0x87 | ESA | END OF SELECTED AREA |
0x97 | ESP | END OF GUARDED AREA |
| 0x88 | HTS | CHARACTER TABULATION SET |
0x98 | SOS | START OF STRING |
| 0x89 | HTJ | CHARACTER TABULATION WITH JUSTIFICATION |
0x99 | | |
| 0x8A | VTS | LINE TABULATION SET |
0x9A | SCI | SINGLE CHARACTER INTRODUCER |
| 0x8B | PLD | PARTIAL LINE FORWARD |
0x9B | CSI | CONTROL SEUENCE INTRODUCER |
| 0x8C | PLU | PARTIAL LINE BACKWARD |
0x9C | ST | STRING TERMINATOR |
| 0x8D | RI | REVERSE LINE FEED |
0x9D | OSC | OPERATING SYSTEM COMMAND |
| 0x8E | SS2 | SINGLE SHIFT TWO |
0x9E | PM | PRIVACY MESSAGE |
| 0x8F | SS3 | SINGLE SHIFT THREE |
0x9F | APC | APPLICATION PROGRAM COMMAND |
| |
|
| |
| △ |
| |
|
■ JISX0208 → SJIS
- コードから 0x2121 を引く
- (コード & 0x100) が0でなければ
コードに 0x9E, 0ならばコードに 0x40 を足す
- 下位バイトが 0x7F 以上ならば コードに 1 を足す
- [上位バイトだけの処理] 上位バイトを右に1ビット
シフトし、それに 0x81 を足す
- (0xA000 <= コード) ならばコードに 0x4000 を足す
| |
|
■ SJIS → JISX0208
- (0xE000 <= コード) ならばコードから 0x4000 を引く
- [上位バイトのみ] 上位バイトから 0x81 を引き
1ビット左にシフトする
- 下位バイトが 0x80 以上ならコードから1を引く
- 下位バイトが 0x9E 以上ならコードに 0x100 を足し、
コードから 0x9E を引く。
そうでなければコードから0x40 を引く
- コードに 0x2121 を足す。
| |
|
「コードに 0x100 を足し、コードから 0x9E を引く」
というのはつまり、
「上位バイトに1を足し,下位バイトから 0x9E を引く」
であり、
「コード全体に 0x62 を足す」ことでもあります。
| |
|
| |
| △ |
| |
|
UTF-8 を改造した、ISO-8859-1 ( Latin-1 ) 向けのエンコーディングです。
UTF-8 同様辞書順が保存されます。
文字の先頭バイトがわかりません。
標準として採用されなかった模様です。
ここでは参考までにアルゴリズムを説明します。
| |
|
u1-u7はそれぞれ8ビット値です。
- 0x00-0xFF (1Byte)
1. u1 = ucode;
2. u1 を出力
- 0x0100-0x7FF (2Byte)
1. u1 = ((ucode >> 7) & 0x0F) | 0x80;
2. u2 = (ucode & 0x7F) | 0x80;
3. u1,u2 の順に出力
- 0x0800-0xFFFF (3Byte)
1. u1 = ((ucode >> 14) & 0x03) | 0x90;
2. u2 = ((ucode >> 7) & 0x7F) | 0x80;
3. u3 = (ucode & 0x7F) | 0x80;
4. u1,u2,u3 の順に出力
- 0x00010000-0x007FFFFF (4Byte)
1. u1 = ((ucode >> 21) & 0x03) | 0x94;
2. u2 = ((ucode >> 14) & 0x7F) | 0x80;
3. u3 = ((ucode >> 7) & 0x7F) | 0x80;
4. u4 = (ucode & 0x7F) | 0x80;
5. u1,u2,u3,u4 の順に出力
- 0x00800000-0x7FFFFFFF (5Byte)
1. u1 = ((ucode >> 28) & 0x07) | 0x98;
2. u2 = ((ucode >> 21) & 0x7F) | 0x80;
3. u3 = ((ucode >> 14) & 0x7F) | 0x80;
4. u4 = ((ucode >> 7) & 0x7F) | 0x80;
5. u5 = (ucode & 0x7F) | 0x80;
6. u1,u2,u3,u4,u5 の順に出力
| |
|
| |
| △ |
| |
|
|
用語 |
意味 |
|
文字集合,文字セット : Charcter Set / charset (狭義)
|
単なる文字の集合.文字に対して番号を振っていない状態.
|
|
Charcter Encoding Method
|
文字集合(狭義) から数値への変換方法の定義.
方法を定義するもので文字集合とは独立のもの.
|
|
符号化文字集合 : Coded Character Set,Codeset , CCS
|
文字集合(狭義) + Chaacter Encoding Method.
文字集合 <-> 数値のマッピング.数値はあくまでも数値で
あって,バイト列とは関係ない.
通常 CCS は文字コード表になっていて,16進表記されており,
CES に直結している場合が多い.
|
|
Character Encoding Scheme , CES
|
CES は "バイト列" <-> "1つ以上の CCS" のマッピングを
あらわす.
たとえば ISO-2022-JP ( の CES )は ASCII,JISX0201(ラテン),
JISX0208 の3つの CCS とバイト列のマッピングを定義する
ものである.
|
|
文字集合,文字セット : Charcter Set / charset (広義)
|
CCSes ( 1つ以上の CCS ) + CES.
バイト列を文字列に変換する方法およびその逆.
一般にいう ISO-2022-JP は, ASCII, JISX0201(ラテン),
JISX0208 の3つの CCS と ISO-2022-JP の CES から
構成されるものを指す.
|
| |
|
| |
| △ |
| |
|
| [1] |
JIS ハンドブック 情報処理 用語 符号
データコード編-1999 , 1999, 財団法人 日本規格協会 |
| [2] |
日本工業規格 国際符号化文字集合(UCS)
第1部 体系及び基本多言語面,1995 , 財団法人 日本規格協会 |
| [3] |
UTF-7 A Mail-Safe Transformation Format of Unicode,
RFC-2152 , D. Goldsmith, M. Davis , 1997 |
| [4] |
UTF-8, a transformation format of ISO 10646,
RFC-2279 , F. Yergeau , 1998
|
| [5] |
Charsets Table,
http://shika.aist-nara.ac.jp/member/nori-d/inet/i18n/charset-tab.html
|
| [6] |
文字コード,
http://dennou-t.ms.u-tokyo.ac.jp/arch/zz1998/mozi/zengaku.html
|
| [7] |
ISO 2022 で定められた情報用符号拡張のエスケープシーケンス一覧,
http://www.tomo.gr.jp/wnn/furoku.html
|
| [8] |
JISX0213 公開レビュー,
http://jcs.aa.tufs.ac.jp/jcs/pubrev/index.html
|
| [9] |
Unicode Home Page,
http://www.unicode.org/
|
| [10] |
fj.kanji の各記事 |
| |
|
| |
|
| |
|
Copyright (C) 1999-2004 いまでぃ
All Rights Reserved.
| |
|
本ホームページに掲載・使用されている全ての画像及び文章の無断使用・転載を禁止します(除右下のバナー)。
本ホームページの内容について いまでぃ は一切保証いたしません。
本ホームページはリンクフリーです。
| |
|
| |