文字コードについて - ele.kochi-tech.ac.jp–‡字コード.pdf ·...

35
文字コードについて

Upload: others

Post on 03-Jun-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 文字コードについて - ele.kochi-tech.ac.jp–‡字コード.pdf · •文字コードは0,1のパター ンと字体を対応づける –1対1対応 •文字列の比較、検索に必要

文字コードについて

Page 2: 文字コードについて - ele.kochi-tech.ac.jp–‡字コード.pdf · •文字コードは0,1のパター ンと字体を対応づける –1対1対応 •文字列の比較、検索に必要

文字コードとは

• 0,1のビットパターンと文字を対応づけるための規則–(誰かが決めた)約束事

Page 3: 文字コードについて - ele.kochi-tech.ac.jp–‡字コード.pdf · •文字コードは0,1のパター ンと字体を対応づける –1対1対応 •文字列の比較、検索に必要

字体(グリフ)と字形(フォント)

•文字と文字は同じ字体だが異なる字形–グリフを表示するためにはフォントが必要

Page 4: 文字コードについて - ele.kochi-tech.ac.jp–‡字コード.pdf · •文字コードは0,1のパター ンと字体を対応づける –1対1対応 •文字列の比較、検索に必要

文字コード

• 文字コードは0,1のパターンと字体を対応づける– 1対1対応• 文字列の比較、検索に必要

Page 5: 文字コードについて - ele.kochi-tech.ac.jp–‡字コード.pdf · •文字コードは0,1のパター ンと字体を対応づける –1対1対応 •文字列の比較、検索に必要

BCD

• Binary Coded Decimal– 0から9の数字に割り当てられたコード– 0 : 0000 à 9 : 1001– 1byteで2桁の数字を表す

Page 6: 文字コードについて - ele.kochi-tech.ac.jp–‡字コード.pdf · •文字コードは0,1のパター ンと字体を対応づける –1対1対応 •文字列の比較、検索に必要

EBCDIC

• Extended Binary Coded Decimal Interchange Code– IBMが使い始めた(大型)計算機用の文字コード

– 1byte 1文字:BCDの拡張• 0 : 00000000 à 9 : 00001001

–使われていないところに英字、記号を割り当てる

–かな文字含むEBCDIKというのもある

Page 7: 文字コードについて - ele.kochi-tech.ac.jp–‡字コード.pdf · •文字コードは0,1のパター ンと字体を対応づける –1対1対応 •文字列の比較、検索に必要

Punch Card

• 1980年代の初め頃までは使われていた。• マークシートのカード。

Page 8: 文字コードについて - ele.kochi-tech.ac.jp–‡字コード.pdf · •文字コードは0,1のパター ンと字体を対応づける –1対1対応 •文字列の比較、検索に必要

ASCII (1)

• American Standard Code for Information Interchange– 00 à 7F : 制御コード、数字、英文字、記号

7bit または MSBを0とした8bit

情報通信のためのコードからつくられているので、改行、紙送りなどの制御コードが含まれる

制御コード

SP

DEL

94文字

Page 9: 文字コードについて - ele.kochi-tech.ac.jp–‡字コード.pdf · •文字コードは0,1のパター ンと字体を対応づける –1対1対応 •文字列の比較、検索に必要

テレタイプ端末 ASR-33

Page 10: 文字コードについて - ele.kochi-tech.ac.jp–‡字コード.pdf · •文字コードは0,1のパター ンと字体を対応づける –1対1対応 •文字列の比較、検索に必要

ASCII (2)

• ASCIIはアメリカ英語のためのコード• 例:通貨記号は$だけ–イギリスでは£が必要

• 英語以外の言語では各種のアクセント記号が必要–フランス語、ドイツ語、スペイン語、イタリア語などアクセント記号が異なる

–言語別、国別に対応したコードが作られた

Page 11: 文字コードについて - ele.kochi-tech.ac.jp–‡字コード.pdf · •文字コードは0,1のパター ンと字体を対応づける –1対1対応 •文字列の比較、検索に必要

ASCII (3)

23 : #24 : $40 : @5Bà5E : [\]60 : `7B à 7E { | } ~

国際規格

国別、言語別に異なる記号を入れる例 UK 23 : £日本 5C : ¥

7E : ‾ (オーバーライン)

ラテンアルファベットと異なる文字の場合は、94文字の配置は自由

Page 12: 文字コードについて - ele.kochi-tech.ac.jp–‡字コード.pdf · •文字コードは0,1のパター ンと字体を対応づける –1対1対応 •文字列の比較、検索に必要

JISコード JIS X0201

• JIS X0201 ラテン文字集合• JIS X0201 片仮名文字集合–いわゆる「半角カナ」

1文字8bitで表す

GL:ラテン文字集合GR:片仮名文字集合

濁点、半濁点は別の文字として扱う

GRGL

94文字 94文字

Page 13: 文字コードについて - ele.kochi-tech.ac.jp–‡字コード.pdf · •文字コードは0,1のパター ンと字体を対応づける –1対1対応 •文字列の比較、検索に必要

ISO/IEC 8859 Latin-x• GL ASCII, GR ASCIIに含まれない文字• 複数の言語を1バイトで表せる• 言語の組み合わせでLatin-1~Latin-16

ASCII ASCIIに含まれない文字

94文字 94文字

1文字8bitで表す

Page 14: 文字コードについて - ele.kochi-tech.ac.jp–‡字コード.pdf · •文字コードは0,1のパター ンと字体を対応づける –1対1対応 •文字列の比較、検索に必要

複数の言語を扱うには• 文字の前に制御文字列を置き、94文字単位で入れ替える– ISO/IEC 2022-XX– ESC(1B) XX XX (文字セットの指定)–エスケープシーケンス

• 欠点:–先頭から読まないと文字を確定できない–文字数とバイト数が一致しない

Page 15: 文字コードについて - ele.kochi-tech.ac.jp–‡字コード.pdf · •文字コードは0,1のパター ンと字体を対応づける –1対1対応 •文字列の比較、検索に必要

漢字はどうする?• JIS X0208– 文字セットと符号化方式は別に考える

• 2バイトで94×94の表を表現する– 94×94=8836(文字)–区点表とも呼ばれる

Page 16: 文字コードについて - ele.kochi-tech.ac.jp–‡字コード.pdf · •文字コードは0,1のパター ンと字体を対応づける –1対1対応 •文字列の比較、検索に必要

漢字はどうする?

• 日本語に混ぜて使われるラテン文字、ギリシャ文字、キリル文字やいろいろな記号もコード化–濁点「゛」、半濁点「゜」のついた文字としてコード化

Page 17: 文字コードについて - ele.kochi-tech.ac.jp–‡字コード.pdf · •文字コードは0,1のパター ンと字体を対応づける –1対1対応 •文字列の比較、検索に必要

JISコード• X0208 第1水準、第2水準 6879文字– (97JIS)

• X0212 補助漢字 6067文字• X0213 第3水準 8797文字

第4水準 2436文字– X0212以降は面を追加– X0213第3水準はX0208に文字を追加したものなので、あわせて17300文字

• 改訂は文字(字体)を増やすだけでなく、異字体の範囲に関する規則が追加されたりしている

Page 18: 文字コードについて - ele.kochi-tech.ac.jp–‡字コード.pdf · •文字コードは0,1のパター ンと字体を対応づける –1対1対応 •文字列の比較、検索に必要

外字/機種依存文字• 外字–ユーザーやプログラムが使われていない区点に独自に割り当てた字体

• 機種依存文字–使われていない区点にメーカー独自に割り当てた字体

Page 19: 文字コードについて - ele.kochi-tech.ac.jp–‡字コード.pdf · •文字コードは0,1のパター ンと字体を対応づける –1対1対応 •文字列の比較、検索に必要

外字/機種依存文字• 異なるメーカーの機器間で異なる字体が割り当てられているので文字化けの原因となる

• 人名、地名などで使われる漢字が登録されることが多かった

Page 20: 文字コードについて - ele.kochi-tech.ac.jp–‡字コード.pdf · •文字コードは0,1のパター ンと字体を対応づける –1対1対応 •文字列の比較、検索に必要

Shift-JIS• ASCIIとJISコードを混ぜて使用するための規則(符号化規則)

• Shift-JIS JIS X0201片仮名の使われていない部分と次の1バイトでJISの区点を表現–第1バイト 80à9F,E0àEF–第2バイト 40à7E,80àFC–GLはラテン文字(ASCIIではない)

Page 21: 文字コードについて - ele.kochi-tech.ac.jp–‡字コード.pdf · •文字コードは0,1のパター ンと字体を対応づける –1対1対応 •文字列の比較、検索に必要

Shift-JIS

• 元々X0201にある文字は半角で表示• 元々X0208にある文字は全角で表示–いわゆる全角文字、半角文字

• 全角、半角は活字の横幅を表していた

Page 22: 文字コードについて - ele.kochi-tech.ac.jp–‡字コード.pdf · •文字コードは0,1のパター ンと字体を対応づける –1対1対応 •文字列の比較、検索に必要

EUC-J

• ASCIIとJISコードを混ぜて使用するための規則(符号化規則)

• 8ビット目:0 ASCII• 8ビット目:1 2バイトコード• 8E:直後1バイトをX0201片仮名にする• 8F:直後2バイトをX0201補助漢字とする

Page 23: 文字コードについて - ele.kochi-tech.ac.jp–‡字コード.pdf · •文字コードは0,1のパター ンと字体を対応づける –1対1対応 •文字列の比較、検索に必要

Shift-JISとEUC-Jの比較• Shift-JIS– MS japanとNECが考案– X0201以降の文字セットには対応出来ない

• EUC-J– AT&TがUNIXのために考案– 処理が単純、多言語化できる

• Shit-JIS,EUCともに現在ではあまり使われない

Page 24: 文字コードについて - ele.kochi-tech.ac.jp–‡字コード.pdf · •文字コードは0,1のパター ンと字体を対応づける –1対1対応 •文字列の比較、検索に必要

漢字の扱い• 漢字を使うのは日本語だけではない• 中国 大陸、台湾は別の文字• 韓国、ベトナム(昔は使っていた)• 字体はそれぞれ別• 統一したコードを作ろうとしたがうまくいかなかった

• 漢字以外でも94文字で収まらない文字集合をつかう言語はいっぱいある

Page 25: 文字コードについて - ele.kochi-tech.ac.jp–‡字コード.pdf · •文字コードは0,1のパター ンと字体を対応づける –1対1対応 •文字列の比較、検索に必要

Unicode (1)

• ASCIIとかLatin-1とかとは全く関係なく、世の中のすべての言語を表現できる文字集合をコード化するのが目的

• 10万字以上が登録されている

Page 26: 文字コードについて - ele.kochi-tech.ac.jp–‡字コード.pdf · •文字コードは0,1のパター ンと字体を対応づける –1対1対応 •文字列の比較、検索に必要

Unicode (2)

•中国、日本、韓国の字体を統合して扱えば16ビットあれば十分であると考えた–CJK Unification

Page 27: 文字コードについて - ele.kochi-tech.ac.jp–‡字コード.pdf · •文字コードは0,1のパター ンと字体を対応づける –1対1対応 •文字列の比較、検索に必要

Unicode (3)

•実際にはうまくいかず、32ビットになった

Page 28: 文字コードについて - ele.kochi-tech.ac.jp–‡字コード.pdf · •文字コードは0,1のパター ンと字体を対応づける –1対1対応 •文字列の比較、検索に必要

Unicode (4)

• Universal Multiple-Octet Coded Character Set (UCS)– ISO/IEC 10646 (JIS X0221)–UCS-4–UCS-2

Page 29: 文字コードについて - ele.kochi-tech.ac.jp–‡字コード.pdf · •文字コードは0,1のパター ンと字体を対応づける –1対1対応 •文字列の比較、検索に必要

Unicode (5)

• UCS-4 4byte 231個の文字を表現可能–Group(群)、Plane(面�、Row(区)、

Cell(点)の組み合わせで文字を特定

• UCS-2 2byte Group 00 Plane 00– Basic Multilingual Plane (BMP)–大半の文字はBMPに入っている

Page 30: 文字コードについて - ele.kochi-tech.ac.jp–‡字コード.pdf · •文字コードは0,1のパター ンと字体を対応づける –1対1対応 •文字列の比較、検索に必要

Unicode (6)

• ����� UTF– UTF-32 計算機内部では32bitで扱う– UTF-8 漢字は2から3バイト

• UTF-8– 00~7F 1byte(7bit)– 0080~07FF 2byte(11bit)– 0800~FFFF 2byte(16bit)– 010000~10FFFF 3byte(21bit)

Page 31: 文字コードについて - ele.kochi-tech.ac.jp–‡字コード.pdf · •文字コードは0,1のパター ンと字体を対応づける –1対1対応 •文字列の比較、検索に必要

Unicode (7)

• CJK漢字統合 日本、中国、台湾、韓国の漢字を1つに統合–字体の違う字を1つにまとめているので一部問題有り

– ISO/IEC 2022-XXとの相互変換が完全ではない

• フォントがなければ、文字コードとして対応出来ていても表示できない

Page 32: 文字コードについて - ele.kochi-tech.ac.jp–‡字コード.pdf · •文字コードは0,1のパター ンと字体を対応づける –1対1対応 •文字列の比較、検索に必要

文字化け• 文字コードが異なる

• フォントがない

• 外字、機種依存などで対応がとれていない

Page 33: 文字コードについて - ele.kochi-tech.ac.jp–‡字コード.pdf · •文字コードは0,1のパター ンと字体を対応づける –1対1対応 •文字列の比較、検索に必要

文字化けWebページの先頭

<meta http-equiv=“Content-Type” content="text/html; charset=UTF-8" />

ページがUTF-8で書かれていることを示す(先頭部分はASCIIが使われる)

Page 34: 文字コードについて - ele.kochi-tech.ac.jp–‡字コード.pdf · •文字コードは0,1のパター ンと字体を対応づける –1対1対応 •文字列の比較、検索に必要

文字化け• 文字指定がなかったら?–ブラウザのデフォールト指定のコード–ブラウザにより暗黙のコードは異なる

• 指定されたコードでないコードが使われていたら?

• 対応するフォントがない文字は?

Page 35: 文字コードについて - ele.kochi-tech.ac.jp–‡字コード.pdf · •文字コードは0,1のパター ンと字体を対応づける –1対1対応 •文字列の比較、検索に必要

対応するフォントがない可能性のある文字

• 人名などで使用される旧字体、異字体–髙 「はしご高」–﨑 「崎」–濱 「浜」–異字体はたくさんある

– Unicodeには登録されているが、対応するフォントがないシステムもある