Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

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

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

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

Slide 26

Slide 26 text

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

Slide 27

Slide 27 text

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

Slide 28

Slide 28 text

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

Slide 29

Slide 29 text

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

Slide 30

Slide 30 text

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

Slide 31

Slide 31 text

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

Slide 32

Slide 32 text

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

Slide 33

Slide 33 text

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

Slide 34

Slide 34 text

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

Slide 35

Slide 35 text

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

Slide 36

Slide 36 text

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

Slide 37

Slide 37 text

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

Slide 38

Slide 38 text

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

Slide 39

Slide 39 text

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

Slide 40

Slide 40 text

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

Slide 41

Slide 41 text

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

Slide 42

Slide 42 text

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

Slide 43

Slide 43 text

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

Slide 44

Slide 44 text

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

Slide 45

Slide 45 text

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

Slide 46

Slide 46 text

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

Slide 47

Slide 47 text

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

Slide 48

Slide 48 text

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