Web教材一覧ハードウェアとソフトウェア

データの内部表現(文字列)

キーワード

情報交換用コード(文字コード体系,キャラクタ・セット),ANSI,EBCDIC,JIS漢字コード,シフトJISコード,EUCコード,Unicode,UTF


文字コードとは

例えば半角の英字「A」は 010000012=4116,漢字の「亜」は,1000 1000 1001 11112=889F16のように数値が対応しています。コンピュータ内部では文字はこの数値で取り扱われます。
 ここで,対象にする文字の範囲(「半角英数字のみ」とか「第4水準漢字」など)を文字集合といいます。そして,文字集合のどの文字にどのビット列を対応させるかの体系を情報交換用コード文字コード体系キャラクタ・セットといいます。
 英語国での文字集合は,英字(A-Z,a-z)と数字(0-9)で62個,$や%などの特殊文字を加えても256個あれば十分(7ビット=128でも十分)ですから,1バイト(=8ビット)ですべての文字種が扱え,ANSIコードのような文字コードは1バイトで構成されています。
 それに対して,漢字も含む日本語の文字集合を扱うには,1バイトでは無理なので,2バイトで1文字を表す文字コードが必要になります。

この文字コード体系は,歴史的な事情により現在ではいくつかの体系が並存しています。例えば「亜」は,JISでは302116,シフトJISでは888F16,EUCではB0A116,UTF-8ではE4BA9C16のようにバラバラです。これでは不便ですので,現在UTFで統一する動きが進んでいます。

主な文字コード

ANSIコード=ASCIIコード=ISOコード
ANSI(米国規格協会)が制定し,その後ISO(国際標準化機構)により,。細かい部分では両者の違いはありますが,国際規格ISO646になりました(それでISOコードともいいます)。7ビット系のコードです(パリティビットをつけて8ビット=1バイトにしていますが,コードとしては7ビットです)。最も広く用いられているコードであり,インターネットでの電子メールもこのコードが用いられています。
JISコード
JIS(日本工業規格)がISOコードに準拠して設定したもので,英数字だけ/カタカナだけを対象にした7ビットコードと,両者を含んだ8ビットコードのものがあります。 (JISコード表)



0000
(00)
0001
(10)
0010
(20)
0011
(30)
0100
(40)
0101
(50)
0110
(60)
0111
(70)
1000
(80)
1001
(90)
1010
(A0)
1011
(B0)
1100
(C0)
1101
(D0)
1110
(E0)
1111
(F0)
0000(00)
DE       
0001(01)SHD1    
0010(02)SXD2    
0011(03)EXD3    
0100(04)ETD4    
0101(05)EQNK    
0110(06)AKSN    
0111(07)BLEB    
1000(08)BSCN    
1001(09)HTEM    
1010(0A)LFSB    
1011(0B)HMEC    
1100(0C)CL    
1101(0D)CR    
1110(0E)SO    
1111(0F)SI_     
JIS漢字コード=ISO-2022-JP
JISコードに2バイトでの漢字を追加したものがJIS漢字コード(正式名称は「情報交換用漢字符号系」JIS X 0208)です。国際的にはISO-2022-JPになっています。
 1バイトのANSIコードと2バイトの漢字コードを識別するために,ANSI→漢字,漢字→ANSIの切り替え部分にエスケープ・シーケンスという特殊文字を入れるのが特徴です。
 その文字集合は次のように拡大してきました。
  • 第1水準漢字
    約500字の記号,英数字,ひらがな,カタカナ等の非漢字と,約3000字の基本的な漢字を含む2956字。その読みがなで分類されています。例:亜(889F)~腕(9872)
  • 第2水準漢字
    人名,地名などの固有名詞に必要な文字や旧漢字など3388文字を加えた。漢字の部首によって分類されています。
  • 第3/第4水準漢字
    実際の出版物では第1/第2水準漢字だけでは,まだ人名や地名,異体字,記号などが不足しているので,非漢字659字,第3水準漢字1249字,第4水準漢字2436字が追加され,全体として1万あまりの文字種になりました。
EBCDIC(エビシディック)コード
IBMが,それまで使われていた4ビットのBCDコード(2進法の数字を表すコード)を8ビット(これからバイトという概念が生まれました)に拡張して英文字などを加えたコードです。システム360と同時に発表し,その後の汎用コンピュータでの標準的なコードとして広く用いられています。日本では,さらにそれを2バイトに拡張して漢字も使えるようにしましたが,メーカーごとに異なるコード体系を持っていました。パソコンでは使われていません。
シフトJISコード
マイクロソフトにより開発されたコードで,WindowsやMacOSなど,パソコンで広く用いられているコードです。ASCIIと半角カタカナを継承してさらに漢字を混在させたコードで,文字の割付に工夫することにより,エスケープ・シーケンスなしに識別できるようにしています。
EUCコード
UNIXで広く用いられているコードです。特に日本語に適用させたものをEUC-JPといいます。半角カタカナよりもJIS漢字を優先させており,半角カタカナは補助的な扱いでプレフィックスという特殊文字をつけた2バイトになっています。
Unicode,UTF
上記のように多くのコードがあるのは困りますので,マイクロソフト,IBM,アップルなどのメーカーが世界中の文字をカバーした文字集合Unicode(Universal multiple-octet coded Character Set)を対象にしてUTF(UCS Transformation Format)を開発しました。これを基に国際規格(ISO 10646-1),JIS規格(JIS X 0221)になりました。
 UTFは1バイトを単位に可変長バイトにしたUTF-8と2バイトを単位にしたUTF-16があります。パソコンでは,従来はシフトJISが主流でしたが,最近はUTF-8を広める傾向になっています。特にWebではUTF-8が標準になっています。