文字コードまめ知識

 

 
 
 

  目次  
【1】 ISO-2022 エスケープシーケンス
【2】 US-ASCII コード表
【3】 JISX0201 コード表
【4】 JISX0211 C0,C1 制御文字集合表
【5】 SJIS ←→ JIS 変換
【6】 UTF-9
【7】 用語解説
【8】 参考文献

 

 

 

ISO-2022 エスケープシーケンス

 

表 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 コード表

 

表 : US-ASCII コード表

 

ISO-646 は 0x21-0x7E の部分だけをいいます。 表中の灰色部分は各国版 ISO-646 で別の文字への入れ替えが許されている領域です。 日本版である JISX0201ラテンでは 0x5C(バックスラッシュ) が 円記号、0x7E(チルダ) がオーバーラインに置き換わっています。 ( 下の表を参照 )

 


 
 
 

JISX0201 コード表

 

表 : JISX0201 コード表
ラテンカナ

 


 
 
 

JISX0211 C0,C1 制御文字集合表

 

表 : C0 集合
番号 意味 番号 意味
0x00NULNULL 0x10DLEDATA LINK ESCAPE
0x01SOHSTART OF HEADING 0x11DC1DEVICE CONTROL ONE
0x02STXSTART OF TEXT 0x12DC2DEVICE CONTROL TWO
0x03ETXEND OF TEXT 0x13DC3DEVICE CONTROL THREE
0x04EOTEND OF TRANSMISSION 0x14DC4DEVICE CONTROL FOUR
0x05ENQENQUIRY 0x15NAKNEGATIVE ACKNOWLEDGE
0x06ACKACKNOWLEDGE 0x16SYNSYNCHRONOUS IDLE
0x07BELBELL 0x17ETBEND OF TRANSMISSION BLOCK
0x08BSBACKSPACE 0x18CANCANCEL
0x09HTHORIZONTAL TABULATION 0x19EMEND OF MEDIUM
0x0ALFLINE FEED 0x1ASUBSUBSTITUTE
0x0BVTVERTICAL TABULATION 0x1BESCESCAPE
0x0CFFFORM FEED 0x1CFSFILE SEPARATOR
0x0DCRCARRIAGE RETURN 0x1DGSGROUP SEPARATOR
0x0ESOSHIFT OUT 0x1ERSRECORD SEPARATOR
0x0FSISHIFT IN 0x1FUSUNIT SEPARATOR

 

表 : C1 集合
番号 意味 番号 意味
0x80   0x90DCSDEVICE CONTROL STRING
0x81   0x91PU1PRIVATE USE ONE
0x82BPHBREAK PERMITTED HERE 0x92PU2PRIVATE USE TWO
0x83NBHNO BREAK HERE 0x93STSSET TRANSMIT STATE
0x84   0x94CCHCANCEL CHARACTER
0x85NELNEXT LINE 0x95MWMESSAGE WAITING
0x86SSASTART OF SELECTED AREA 0x96SPASTART OF SELECTED AREA
0x87ESAEND OF SELECTED AREA 0x97ESPEND OF GUARDED AREA
0x88HTSCHARACTER TABULATION SET 0x98SOSSTART OF STRING
0x89HTJCHARACTER TABULATION WITH JUSTIFICATION 0x99  
0x8AVTSLINE TABULATION SET 0x9ASCISINGLE CHARACTER INTRODUCER
0x8BPLDPARTIAL LINE FORWARD 0x9BCSICONTROL SEUENCE INTRODUCER
0x8CPLUPARTIAL LINE BACKWARD 0x9CSTSTRING TERMINATOR
0x8DRIREVERSE LINE FEED 0x9DOSCOPERATING SYSTEM COMMAND
0x8ESS2SINGLE SHIFT TWO 0x9EPMPRIVACY MESSAGE
0x8FSS3SINGLE SHIFT THREE 0x9FAPCAPPLICATION PROGRAM COMMAND

 


 
 
 

SJIS ←→ JIS 変換

 

 ■ JISX0208 → SJIS
  1. コードから 0x2121 を引く
  2. (コード & 0x100) が0でなければ コードに 0x9E, 0ならばコードに 0x40 を足す
  3. 下位バイトが 0x7F 以上ならば コードに 1 を足す
  4. [上位バイトだけの処理] 上位バイトを右に1ビット シフトし、それに 0x81 を足す
  5. (0xA000 <= コード) ならばコードに 0x4000 を足す

 

 ■ SJIS → JISX0208
  1. (0xE000 <= コード) ならばコードから 0x4000 を引く
  2. [上位バイトのみ] 上位バイトから 0x81 を引き 1ビット左にシフトする
  3. 下位バイトが 0x80 以上ならコードから1を引く
  4. 下位バイトが 0x9E 以上ならコードに 0x100 を足し、 コードから 0x9E を引く。 そうでなければコードから0x40 を引く
  5. コードに 0x2121 を足す。

 

「コードに 0x100 を足し、コードから 0x9E を引く」 というのはつまり、
「上位バイトに1を足し,下位バイトから 0x9E を引く」 であり、
「コード全体に 0x62 を足す」ことでもあります。

 


 
 
 

UTF-9

 

UTF-8 を改造した、ISO-8859-1 ( Latin-1 ) 向けのエンコーディングです。 UTF-8 同様辞書順が保存されます。 文字の先頭バイトがわかりません。 標準として採用されなかった模様です。 ここでは参考までにアルゴリズムを説明します。

 

u1-u7はそれぞれ8ビット値です。
  1. 0x00-0xFF (1Byte)
    1. u1 = ucode;
    2. u1 を出力
     
  2. 0x0100-0x7FF (2Byte)
    1. u1 = ((ucode >> 7) & 0x0F) | 0x80;
    2. u2 = (ucode & 0x7F) | 0x80;
    3. u1,u2 の順に出力
     
  3. 0x0800-0xFFFF (3Byte)
    1. u1 = ((ucode >> 14) & 0x03) | 0x90;
    2. u2 = ((ucode >> 7) & 0x7F) | 0x80;
    3. u3 = (ucode & 0x7F) | 0x80;
    4. u1,u2,u3 の順に出力
     
  4. 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 の順に出力
     
  5. 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.
本ホームページに掲載・使用されている全ての画像及び文章の無断使用・転載を禁止します(除右下のバナー)。
本ホームページの内容について いまでぃ は一切保証いたしません。
本ホームページはリンクフリーです。


製作  いまでぃ  
最終更新日  2004/07/11
文字コードの解説に戻る