Rabbit Slide Show

文字コード略歴

2012-05-18

Description

日本の文字コードの歴史を簡単にまとめました。

Text

Page: 1

文字コード略歴
よこやままさふみ
社内勉強会
2012/05/18
文字コード略歴
Powered by Rabbit 2.0.6

Page: 2

自己紹介
✓ 横山昌史
✓ 入社4年目
✓ プログラマ etc...
✓ 所属プロジェクト
✓ Java、UNIX、雑用 etc...
✓ 文字コードの "るつぼ"
文字コード略歴
Powered by Rabbit 2.0.6

Page: 3

Rabbitについて
✓ プレゼンテーションツール
✓ 実装: Ruby/GTK
✓ 動作: UNIX/Win/Mac
✓ 文章とデザインの分離
✓ バージョン管理しやすい
文字コード略歴
Powered by Rabbit 2.0.6

Page: 4

文字コードとは
✓ 文字をコンピュータで扱うための
符号化方式
✓ エンコード、キャラクターセットとも
呼ばれる
文字コード略歴
Powered by Rabbit 2.0.6

Page: 5

符号化
✓ 文字や音声などを0と1のデジタ
ルデータに変換すること
✓ 16進数で記述されることが多い
✓ Javaなどでは、頭に"0x"を付けると16
進数として扱われる
文字コード略歴
Powered by Rabbit 2.0.6

Page: 6

よく使われる文字コード
✓ ASCII
✓ Shift_JIS
✓ UTF-8(Unicode)
✓ EBCDIC
文字コード略歴
Powered by Rabbit 2.0.6

Page: 7

ASCII
文字コード略歴
Powered by Rabbit 2.0.6

Page: 8

ASCII
American
Standard
Code for
Information
Interchange
文字コード略歴
Powered by Rabbit 2.0.6

Page: 9

ASCII
✓ 英語を表現するための文字コード
✓ 英字アルファベット、記号
✓ いわゆる半角文字
文字コード略歴
Powered by Rabbit 2.0.6

Page: 10

ASCII
✓ 1文字につき7ビットの1バイトコ
ード
7
✓ 7ビット = 2 = 128
✓ 16進数で言うと0x00〜0x7Fまで
✓ 1バイト = 8ビットのため、1ビット余り
文字コード略歴
Powered by Rabbit 2.0.6

Page: 11

ASCIIの例
✓ Heisei 24
✓ 48 65 69 73 65 69 20 32 34
✓ 16進数(0xは省略)
文字コード略歴
Powered by Rabbit 2.0.6

Page: 12

JIS X 0201
✓ 日本工業規格
✓ 一部の符号位置がASCIIと違う
✓ 半角カナが使える
✓ 8ビット目を拡張
文字コード略歴
Powered by Rabbit 2.0.6

Page: 13

ASCIIと異なる文字
✓ 符号位置0x5C
✓ ASCII:半角バックスラッシュ
✓ JISX0201:半角円記号
文字コード略歴
Powered by Rabbit 2.0.6

Page: 14

ASCIIと異なる文字
✓ 符号位置0x7E
✓ ASCII:半角チルダ
✓ JISX0201:半角オーバーライン
文字コード略歴
Powered by Rabbit 2.0.6

Page: 15

ASCIIと異なる文字
✓ ASCIIかJISX0201かは曖昧
✓ 環境によって表示が変わる
✓ 日本のフォントは円記号
✓ 外国のフォントはバックスラッシュ
✓ 7Eは日本でも大抵チルダ
文字コード略歴
Powered by Rabbit 2.0.6

Page: 16

Shift_JIS
文字コード略歴
Powered by Rabbit 2.0.6

Page: 17

Q & A
✓ Q.あなたの母語は何語ですか?
✓ A.日本語
✓ Q.日本語は英字アルファベットだ
けで表現できますか?
✓ A.いいえ
文字コード略歴
Powered by Rabbit 2.0.6

Page: 18

ひらがなや漢字が必要
✓ 常用漢字 2,136文字(2010年
改定)
8
✓ 1バイト = 8ビット = 2 = 256
✓ 1バイトでは表現できない
文字コード略歴
Powered by Rabbit 2.0.6

Page: 19

2バイトコード
✓ 1文字を2バイトで符号化
16
✓ 2バイト = 16ビット = 2 =
65,536
文字コード略歴
Powered by Rabbit 2.0.6

Page: 20

JIS X 0208
✓ 日本工業規格
✓ JIS第1・第2水準漢字を定義
✓ 最新版では6,879文字を収録
✓ 1983年に大幅な変更
✓ 異字体の符号位置入れ替え
✓ 字形の変更
文字コード略歴
Powered by Rabbit 2.0.6

Page: 21

JIS X 0213
✓ 日本工業規格
✓ JIS X 0208の拡張(後方互換)
✓ JIS第3・第4水準漢字を定義
✓ 環境によってはJISX0213に対応
していない(JIS第3・第4水準漢字
が使えない)
文字コード略歴
Powered by Rabbit 2.0.6

Page: 22

Shift_JISの成り立ち
JIS X 0201
+
JIS X 0208(JIS X 0213)
文字コード略歴
Powered by Rabbit 2.0.6

Page: 23

Shift_JISの特徴
✓ 日本語が表現できる
✓ 半角カナが使える
✓ JISX0201との互換性
文字コード略歴
Powered by Rabbit 2.0.6

Page: 24

Shift_JISの例
✓ 平成 24
✓ 95 BD 90 AC 20 32 34
文字コード略歴
Powered by Rabbit 2.0.6

Page: 25

Shift_JISの欠点
✓ 全角半角問題
✓ 「A」と「A」、「ア」と「ア」など
✓ 全角文字を扱える文字コード共通の問
題
✓ JISX0201の副作用
✓ だめ文字
文字コード略歴
Powered by Rabbit 2.0.6

Page: 26

Shift_JISの派生
✓ WindowsではShift_JISを拡張し
た文字コードが使われている
✓ Windows31-JやMS932やCP932な
どと呼ばれる
✓ 重複符号化(㈱問題)
✓ 同じ文字に複数の符号位置
文字コード略歴
Powered by Rabbit 2.0.6

Page: 27

UTF-8
文字コード略歴
Powered by Rabbit 2.0.6

Page: 28

Q & A
✓ Q.今はどんな時代ですか?
✓ A.国際化時代
✓ Q.Shift_JISの欠点はどこですか?
✓ A.日本語しか扱えない
文字コード略歴
Powered by Rabbit 2.0.6

Page: 29

Unicode
✓ 世界中の言語を表現できる文字
コードの仕様がUnicode
✓ 110,181文字(2012年1月)
文字コード略歴
Powered by Rabbit 2.0.6

Page: 30

Unicode
✓ Unicodeの実装の一つがUTF-8
✓ 他にもUTF-16など
文字コード略歴
Powered by Rabbit 2.0.6

Page: 31

UTF-8の特徴
✓ ASCIIを拡張
✓ Shift_JISとは違い、JISX0201の拡張
ではない
✓ 半角カナなどの符号位置がShift_JISと
違う
✓ だめ文字がない
文字コード略歴
Powered by Rabbit 2.0.6

Page: 32

1文字のバイト数
✓ ASCII
✓ 全て半角文字 = 全て1バイト
✓ Shift_JIS
✓ 半角 = 1バイト
✓ 全角 = 2バイト
文字コード略歴
Powered by Rabbit 2.0.6

Page: 33

1文字のバイト数
✓ UTF-8
✓ 半角 = 主に1バイト
✓ 全角 = 日本語は3バイト
✓ 記号は3バイトか2バイト
文字コード略歴
Powered by Rabbit 2.0.6

Page: 34

UTF-8の例
✓ 平成 24
✓ E5 89 B3 E6 88 90 20 32 34
文字コード略歴
Powered by Rabbit 2.0.6

Page: 35

1バイトでない半角文字
✓ \(半角)が2種類
✓ 5C (ASCII): 規格上はバックスラッシュ
✓ C2 A5 (UTF-8): 規格上は円記号
✓ 2バイトの半角文字
文字コード略歴
Powered by Rabbit 2.0.6

Page: 36

1バイトでない半角文字
✓ ~(半角)も2種類
✓ 7E (ASCII): 規格上はチルダ
✓ E2 80 BE (UTF-8): 規格上はオーバ
ーライン
✓ 3バイトの半角文字
文字コード略歴
Powered by Rabbit 2.0.6

Page: 37

半角カナ
✓ ア (半角)
✓ B1 (Shift_JIS)
✓ EF BD B1 (UTF-8)
✓ UTF-8の半角カナは全て3バイト
✓ 単純なバイト数チェックでは、半角
か全角か判別できない
文字コード略歴
Powered by Rabbit 2.0.6

Page: 38

IBM版とMS版
✓ IBM-Unicode(一般的な
Unicode)とMS-Unicode(マイ
クロソフト版Unicode)で符号位
置が異なる文字がある
✓ いわゆる波ダッシュ問題の要因
文字コード略歴
Powered by Rabbit 2.0.6

Page: 39

波ダッシュ問題
✓ Windowsとそれ以外のOS間で
の通信時などに文字化け
✓ 対象文字は10文字程度(環境に
よる)
✓ 〜 — - ‖ ∥ ¦ ¬ ¢ £
文字コード略歴
Powered by Rabbit 2.0.6

Page: 40

EBCDIC
文字コード略歴
Powered by Rabbit 2.0.6

Page: 41

EBCDIC
✓ IBMによって定義された文字コー
ド
✓ IBM製のメインフレーム(汎用機)など
で現在も使用されている
文字コード略歴
Powered by Rabbit 2.0.6

Page: 42

EBCDIC
✓ 半角文字の符号位置がASCIIと
異なる
✓ 全角文字の表現方法がShift_JIS
やUTF-8と異なる
✓ 基本的にJIS第3・第4水準は含ま
れない
文字コード略歴
Powered by Rabbit 2.0.6

Page: 43

半角文字
✓ すべて1バイト
✓ 8ビット目まで使用
✓ 制御文字エリアが大きい
✓ 0x00〜0x3Fと0xFF
✓ 汎用機で使用される特殊な制御文字
が含まれている
文字コード略歴
Powered by Rabbit 2.0.6

Page: 44

全角文字
✓ 半角文字との区別は制御文字で
行う
✓ 全角の開始位置がシフトアウト(0x0E)
✓ 全角の終了位置がシフトイン(0x0F)
✓ 略してSO/SIなどと呼ばれる
文字コード略歴
Powered by Rabbit 2.0.6

Page: 45

SO/SI
✓ 平成 24
✓ 0E 45 8D 45 BA 0F 40 F2 F4
文字コード略歴
Powered by Rabbit 2.0.6

Page: 46

うわっ…
✓ SIの欠如
✓ 0E 45 8D 45 BA
✓ SO/SIのネスト
✓ 0E 45 8D 0E 45 BA 0F 0F
✓ SO/SIを対として扱うのではなく、
モード切替文字として扱うことで
対応
文字コード略歴
Powered by Rabbit 2.0.6

Page: 47

まとめ
文字コード略歴
Powered by Rabbit 2.0.6

Page: 48

参考
✓ プログラマのための文字コード技
術入門
✓ 正規表現クックブック(66ページ)
✓ AIX 5L 日本語コード一覧表
✓ jp_codebookで検索
ご静聴ありがとうございました。
文字コード略歴
Powered by Rabbit 2.0.6

Other slides