41
情報基礎 情報の符号化 (2) 文字コードとその周辺 Copyright © 2006-2019 Kota Abe 最終改訂 2019/12/26 1

情報基礎 - Osaka City Universityk-abe/joho-kiso/johokiso-char.pdf · American National Standards Institution (米国国家標準協会) lアメリカで必要な文字を集めて7ビットで表現

  • Upload
    others

  • View
    5

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 情報基礎 - Osaka City Universityk-abe/joho-kiso/johokiso-char.pdf · American National Standards Institution (米国国家標準協会) lアメリカで必要な文字を集めて7ビットで表現

情報基礎

情報の符号化 (2)文字コードとその周辺

Copyright © 2006-2019 Kota Abe最終改訂 2019/12/26

1

Page 2: 情報基礎 - Osaka City Universityk-abe/joho-kiso/johokiso-char.pdf · American National Standards Institution (米国国家標準協会) lアメリカで必要な文字を集めて7ビットで表現

l コンピュータで文字情報を扱う方法◎ 文字コード

◯ ASCII,JIS漢字,Unicodeなど◎ 各種エンコーディング

○ ISO-2022-JP, Shift_JIS, EUC-JP

◎ 電子メールやWebと文字コードの関係l 文字コードの重要性について理解する

今日やること 2

Page 3: 情報基礎 - Osaka City Universityk-abe/joho-kiso/johokiso-char.pdf · American National Standards Institution (米国国家標準協会) lアメリカで必要な文字を集めて7ビットで表現

l コンピュータで(数値だけでなく)文字情報も扱いたい!コンピュータは数値しか扱えない文字をどうやって扱うか?

文字の扱いかた 3

Page 4: 情報基礎 - Osaka City Universityk-abe/joho-kiso/johokiso-char.pdf · American National Standards Institution (米国国家標準協会) lアメリカで必要な文字を集めて7ビットで表現

4

Page 5: 情報基礎 - Osaka City Universityk-abe/joho-kiso/johokiso-char.pdf · American National Standards Institution (米国国家標準協会) lアメリカで必要な文字を集めて7ビットで表現

l 文字コード: 文字に割り当てた数値

符号化と復号

This is a pen.

84 104 105 83 …

符号化(エンコード, encode)何かを数値に置き換える(コード化する)こと

復号(デコード, decode)数値から元に戻すこと

This is a pen.

5

Page 6: 情報基礎 - Osaka City Universityk-abe/joho-kiso/johokiso-char.pdf · American National Standards Institution (米国国家標準協会) lアメリカで必要な文字を集めて7ビットで表現

l それぞれのコードにフォント(文字の形)データを割り当て,描画

文字コードから文字へ

414243:

Aの形のデータ

Bの形のデータ

Cの形のデータ

フォントデータ文字コード

B

描画

6

Page 7: 情報基礎 - Osaka City Universityk-abe/joho-kiso/johokiso-char.pdf · American National Standards Institution (米国国家標準協会) lアメリカで必要な文字を集めて7ビットで表現

l 文を表現するには,「改行」が必要

l 「改行」のような見えないものにもコードを割り当てて表現する制御コード

制御コード

“Do you know Tom Riddle?”

“Yes”

改行!

改行!

7

Page 8: 情報基礎 - Osaka City Universityk-abe/joho-kiso/johokiso-char.pdf · American National Standards Institution (米国国家標準協会) lアメリカで必要な文字を集めて7ビットで表現

l 誰かと文字情報をやり取りするためには,互いに同じ文字コードを用いる必要があるやりとり = フロッピーディスクやネットワークによる情報交換みんなが勝手な文字コードを使うと困るお互いに利用する文字コードに対する合意が必要違う文字コードを使うと文字化けが発生する

l 以下,重要な文字コードについて解説ASCIIJIS X 0201JIS X 0208 (JIS漢字コード)Unicode

文字コードの重要性 8

Page 9: 情報基礎 - Osaka City Universityk-abe/joho-kiso/johokiso-char.pdf · American National Standards Institution (米国国家標準協会) lアメリカで必要な文字を集めて7ビットで表現

l American Standard Code for Information Interchange(アスキー)

l 1963年, ASA (ANSIの前身) が制定American Standard Association (米国規格協会)American National Standards Institution (米国国家標準協会)

l アメリカで必要な文字を集めて7ビットで表現7ビット = 128種類の文字を表現可能0x00~0x7F を使用する8ビットで使用するときは,最上位ビットを0にしておく

l コンピュータの最も基本となる文字コード

ASCIIコード 9

Page 10: 情報基礎 - Osaka City Universityk-abe/joho-kiso/johokiso-char.pdf · American National Standards Institution (米国国家標準協会) lアメリカで必要な文字を集めて7ビットで表現

ASCIIコード表

下位の桁

上位の桁0x20はスペース

(“ “)

各種制御コード

0x7Fも制御コード(デリー

ト)図はhttp://www.mew.org/ より引用

10

Page 11: 情報基礎 - Osaka City Universityk-abe/joho-kiso/johokiso-char.pdf · American National Standards Institution (米国国家標準協会) lアメリカで必要な文字を集めて7ビットで表現

l よく使われる制御コード0x09 水平タブ (Horizontal Tabulation, HT) (水平方向に一定の桁まで移動.Tabキーで入力)

0x0a 改行 (Line Feed, LF) (一行紙を送る)

0x0d 復帰 (Carriage Return, CR)(行頭へ戻す)

0x1b エスケープ (Escape, ESC) (後述)

l 改行コードの違い歴史的事情により,WindowsとUNIXでは異なる改行コードを使用Windows: CR + LF (=0x0d + 0x0a) (2バイト)UNIX (Linux, MacOS X など): LF (=0x0a) (1バイト)

l 制御コードを ^ (キャレット) を使って以下のように表す場合もある0x00 ^@ 0x01 ^A 0x02 ^B 0x03 ^C 0x04 ^D … 0x1A ^Z 0x1B ^[ …0x7F ^?ソフトウェアによってはControlキーを押しながらA(, B, C,...)を押すと制御コード0x01(, 0x02, 0x03,…)を入力できるものもある.

制御コード (続き) 11

Page 12: 情報基礎 - Osaka City Universityk-abe/joho-kiso/johokiso-char.pdf · American National Standards Institution (米国国家標準協会) lアメリカで必要な文字を集めて7ビットで表現

l エディタで次のようなファイルを作成し,適当なファイル名でセーブ

l 16進エディタ(Stirling)でファイルを覗いてみよ文字やアルファベットとASCIIコード表を照合せよタブや改行のコードを確認せよ

演習

ABC DEF

012

タブ 改行

改行

12

Page 13: 情報基礎 - Osaka City Universityk-abe/joho-kiso/johokiso-char.pdf · American National Standards Institution (米国国家標準協会) lアメリカで必要な文字を集めて7ビットで表現

l 次のバイト列をASCIIコード列とみなし,何が書いてあるのかを読み取れ(16進数)ASCIIコード表を参照せよ78 3d 32 33 0a 79 3d 78 2b 35 39 0a

またこのバイト列はどの環境で作られたものか? (Windows, UNIX)

演習 13

Page 14: 情報基礎 - Osaka City Universityk-abe/joho-kiso/johokiso-char.pdf · American National Standards Institution (米国国家標準協会) lアメリカで必要な文字を集めて7ビットで表現

l JIS: 日本工業規格(Japanese Industrial Standard)

l 「7ビット及び8ビットの情報交換用符号化文字集合」 (1969年)

l 日本向けにASCIIを拡張0x5c バックスラッシュ(\) を円記号(¥)に変更0x7e チルダ(~)をオーバースコア(‾)に変更いわゆる半角カナを追加濁点(゛)や半濁点(゜)つきの文字は2文字で表す (例: アボカド)

JIS X 0201 14

Page 15: 情報基礎 - Osaka City Universityk-abe/joho-kiso/johokiso-char.pdf · American National Standards Institution (米国国家標準協会) lアメリカで必要な文字を集めて7ビットで表現

JIS X 0201 未使用

未使用

制御文字

ASCII互換部分

15

Page 16: 情報基礎 - Osaka City Universityk-abe/joho-kiso/johokiso-char.pdf · American National Standards Institution (米国国家標準協会) lアメリカで必要な文字を集めて7ビットで表現

l 「7ビット及び8ビットの2バイト情報交換用符号化漢字集合」 (初版1978年)

l いわゆる全角文字l 日本語情報処理の基本

常用漢字,人名用漢字を含むJIS漢字,JIS漢字コードとも呼ばれる約7000文字

l 収録文字種各種記号,アラビア数字,ローマ字,ひらがな,カタカナ,ギリシャ文字,キリル文字,罫線素片第1水準漢字,第2水準漢字

JIS漢字コード(JIS X 0208) (1) 16

Page 17: 情報基礎 - Osaka City Universityk-abe/joho-kiso/johokiso-char.pdf · American National Standards Institution (米国国家標準協会) lアメリカで必要な文字を集めて7ビットで表現

l 2バイトで1文字を表現 (1バイトでは足らない!)第1バイト+第2バイトそれぞれ0x21~0x7eを使う0x3021 = 亜

l 歴史1978年制定 78JIS (旧JIS)1983年改訂 83JIS (新JIS)

l 幽霊文字(典拠不明の文字)妛,彁,etc.

l 地上デジタル放送の字幕は JIS X 0208 (+ ARIB外字)

JIS漢字コード(JIS X 0208) (2) 17

Page 18: 情報基礎 - Osaka City Universityk-abe/joho-kiso/johokiso-char.pdf · American National Standards Institution (米国国家標準協会) lアメリカで必要な文字を集めて7ビットで表現

JIS漢字コード表(一部) 18

Page 19: 情報基礎 - Osaka City Universityk-abe/joho-kiso/johokiso-char.pdf · American National Standards Institution (米国国家標準協会) lアメリカで必要な文字を集めて7ビットで表現

l JIS X 0213 (JIS2000, JIS2004)「7ビット及び8ビットの2バイト情報交換用符号化拡張漢字集合」JIS X 0208 を包含第3水準, 第4水準 (約4300文字)を追加計11,233字「か゚か゚き゚く゚け゚こ゚セ゚ツ゚ト゚」,「彅(なぎ)」などWindowsはVista以降JIS2004に対応MSゴシック,MS明朝,メイリオ

関連規格 19

Page 20: 情報基礎 - Osaka City Universityk-abe/joho-kiso/johokiso-char.pdf · American National Standards Institution (米国国家標準協会) lアメリカで必要な文字を集めて7ビットで表現

l 包摂どこまで同一の文字と見なすか(包摂規準)クチ高とハシゴ高を区別するか?土吉と士吉(吉野家の吉は?)

l JIS X 0201 と JIS X 0208で重複する文字が存在 (重複符号化)アルファベット,数字,カタカナ,空白,記号○ ABC012カタカナ vs. ABC012カタカナコードが異なるため,コンピュータにとっては異なる文字

注意すべきこと 20

Page 21: 情報基礎 - Osaka City Universityk-abe/joho-kiso/johokiso-char.pdf · American National Standards Institution (米国国家標準協会) lアメリカで必要な文字を集めて7ビットで表現

l JIS漢字とASCII文字などを混在して使用したいl このために各種のエンコーディングが使用されている

エンコーディング: 文字コードなどをファイルに格納(or ネットワークで伝送)する方式のこと

l ISO-2022-JPJIS漢字の前後にマーク(エスケープシーケンス)をつける日本語の電子メールで用いられる

l Shift_JIS, EUC-JPある規則でJIS漢字とASCIIが重ならないように変換したコード体系Shift_JIS (SJIS): Windows, MacOS Xでよく使われるEUC-JP: UNIXでよく使われる(ていた)

各種エンコーディング 21

Page 22: 情報基礎 - Osaka City Universityk-abe/joho-kiso/johokiso-char.pdf · American National Standards Institution (米国国家標準協会) lアメリカで必要な文字を集めて7ビットで表現

エスケープシーケンス

ASCII JIS X 0208 ASCII

ここからJIS X 0208

ここからASCII ESC=0x1b

ASCII ESC ( B

JIS X 0201の0x20~0x7e ESC ( J

JIS X 0208(78年版) ESC $ @

JIS X 0208(83年版) ESC $ B

22

Page 23: 情報基礎 - Osaka City Universityk-abe/joho-kiso/johokiso-char.pdf · American National Standards Institution (米国国家標準協会) lアメリカで必要な文字を集めて7ビットで表現

l コード表を参照し,次のShift_JISコードで書かれた文字列を解読せよ82 b2 96 bc 93 9a 21 21ヒント: 第1バイトが0x20~0x7fならば,ASCII (正確にはJIS X 0201)

l エディタで適当な文字列を入力してセーブし,そのファイルをStarlingで開く.コード表と照らし合わせて,どのように文字が格納されているか確認する.

演習 23

Page 24: 情報基礎 - Osaka City Universityk-abe/joho-kiso/johokiso-char.pdf · American National Standards Institution (米国国家標準協会) lアメリカで必要な文字を集めて7ビットで表現

l 俗に,半角文字: ASCII や JIS X 0201 (コンナモジ)の文字全角文字: JIS X 0208 (JIS漢字)の文字

と呼ぶことがある.l 昔はASCII文字などの幅をJIS漢字の幅の半分にするのが一般的だったため

l 実際は使用するフォントによって文字の幅は異なるので,半角・全角と呼ぶのは避けたほうが良いという意見もある

半角と全角 24

Page 25: 情報基礎 - Osaka City Universityk-abe/joho-kiso/johokiso-char.pdf · American National Standards Institution (米国国家標準協会) lアメリカで必要な文字を集めて7ビットで表現

l 機種依存文字コード表の空き領域にメーカーが独自に文字を定義したものWindowsの機種依存文字④⑤⑥,ⅠⅡⅢⅣⅤ,㍉㍍㍑㌘,㍾㍽㍼㍻,℡№など(JIS2000で標準に取り込まれた)

携帯電話の絵文字(Unicode6で規格に取り込まれた)

l ユーザ定義文字コード表の外字領域にユーザが定義Windows: 外字エディタ

l 情報交換の障害となるので,電子メールやWebページで使わないこと

機種依存文字とユーザ定義文字 25

Page 26: 情報基礎 - Osaka City Universityk-abe/joho-kiso/johokiso-char.pdf · American National Standards Institution (米国国家標準協会) lアメリカで必要な文字を集めて7ビットで表現

l 世界各国に様々な文字コードが存在韓国 EUC-KR中国 GB18030台湾 BIG5タイ TIS-620ヨーロッパ ISO-8859-1 等

l 多言語対応のソフトウェアを作るのが大変!

Unicode | 背景 (1) 26

Page 27: 情報基礎 - Osaka City Universityk-abe/joho-kiso/johokiso-char.pdf · American National Standards Institution (米国国家標準協会) lアメリカで必要な文字を集めて7ビットで表現

l 世界中の全ての文字を網羅した文字コードを作ってしまおう!Unicode Consortium http://www.unicode.org/Microsoft, Apple, Oracle, etc.

l 主要なOSでUnicodeをサポート多くのエディタ,Webブラウザ,プログラミング言語でもUnicodeをサポート

l テキストファイルをUnicodeで書くことも珍しくない

Unicode | 背景 (2) 27

Page 28: 情報基礎 - Osaka City Universityk-abe/joho-kiso/johokiso-char.pdf · American National Standards Institution (米国国家標準協会) lアメリカで必要な文字を集めて7ビットで表現

Unicode | 収録文字種 (一部)

http://www.unicode.org/charts/

28

Page 29: 情報基礎 - Osaka City Universityk-abe/joho-kiso/johokiso-char.pdf · American National Standards Institution (米国国家標準協会) lアメリカで必要な文字を集めて7ビットで表現

Unicode | コード表の例 29

Page 30: 情報基礎 - Osaka City Universityk-abe/joho-kiso/johokiso-char.pdf · American National Standards Institution (米国国家標準協会) lアメリカで必要な文字を集めて7ビットで表現

l 元々は16ビットで全ての文字を表す構想文字をU+261A のように表記する (☚)現在は21ビットに拡張 (結局足らなくなったので)U+0000 から U+10FFFF まで

l JIS漢字コードに含まれる文字は全て収録されているl コードを節約するために日本,中国,韓国の漢字を

一旦バラバラにして統合CJK統合漢字 (Chinese-Japanese-Korean)JIS漢字との変換には変換表が必要「高低」(日本語)と「高低」(中国語)は同じコード

Unicode | 概要 30

Page 31: 情報基礎 - Osaka City Universityk-abe/joho-kiso/johokiso-char.pdf · American National Standards Institution (米国国家標準協会) lアメリカで必要な文字を集めて7ビットで表現

l Unicode絵文字 (emoji)日本の携帯電話で使われている文字を取り込みGoogleの提案で導入 (Unicode6, 2010/10)WindowsではIMEパッドの文字一覧で入力できる世界的に普及環境(フォント)によって形が異なることに注意

Unicode | emoji 31

Page 32: 情報基礎 - Osaka City Universityk-abe/joho-kiso/johokiso-char.pdf · American National Standards Institution (米国国家標準協会) lアメリカで必要な文字を集めて7ビットで表現

l 日本の携帯の絵文字は人種多様性をほとんど意識していなかった

l 絵文字フォントのカラー化により「肌色」が問題に

l Unicode 8で肌色を5色から選べる機能が追加黄色/オレンジ=特定の人種を表さない色

Unicode | emojiの肌色問題 32

Page 33: 情報基礎 - Osaka City Universityk-abe/joho-kiso/johokiso-char.pdf · American National Standards Institution (米国国家標準協会) lアメリカで必要な文字を集めて7ビットで表現

l U+32FF ㋿1文字で「令和」を表す(合字)Unicode 12.1.0 で追加 (2019/5)

Unicode | 令和 33

Page 34: 情報基礎 - Osaka City Universityk-abe/joho-kiso/johokiso-char.pdf · American National Standards Institution (米国国家標準協会) lアメリカで必要な文字を集めて7ビットで表現

l Unicodeの主なエンコーディングUTF-8 (1~4バイトの可変長でエンコード)U+0000~U+007F (ASCII互換部分) 1バイトU+0080~U+07FF 2バイトU+0800~U+FFFF 3バイト (漢字やひらがななど)U+10000~ 4バイト

UTF-16 (基本的に2バイト固定長でエンコード)U+10000以降は4バイト使う

Unicode | エンコーディング 34

Page 35: 情報基礎 - Osaka City Universityk-abe/joho-kiso/johokiso-char.pdf · American National Standards Institution (米国国家標準協会) lアメリカで必要な文字を集めて7ビットで表現

l テキストエディタなどに Unicode の文字コードを指定して文字を入力してみよ◎ 日本語入力モードで16進数を入力しF5キーを押す◎ 「Windowsアクセサリ」→「文字コード表」を使う.

フォントとして游ゴシックなどを選び,「詳細表示」にチェックを入れる.

l 自分の名前の文字をUnicodeで探し,U+XXXX のように表記してみよう漢字辞典オンライン https://kanji.jitenon.jp

演習 35

Page 36: 情報基礎 - Osaka City Universityk-abe/joho-kiso/johokiso-char.pdf · American National Standards Institution (米国国家標準協会) lアメリカで必要な文字を集めて7ビットで表現

身近なところの文字コード

36

Page 37: 情報基礎 - Osaka City Universityk-abe/joho-kiso/johokiso-char.pdf · American National Standards Institution (米国国家標準協会) lアメリカで必要な文字を集めて7ビットで表現

l <meta>タグを使ってエンコーディングを指定ブラウザはこれを頼りに表示する

l 文字化けの原因Metaタグを使用していないMetaタグのエンコーディング指定と本文のエンコーディングが異なっている

Webページと文字コード(1)

<meta HTTP-EQUIV=“Content-Type” CONTENT=“text/html; charset=ISO-2022-JP”><meta HTTP-EQUIV=“Content-Type” CONTENT=“text/html; charset=EUC-JP”><meta HTTP-EQUIV=“Content-Type” CONTENT=“text/html; charset=Shift_JIS”><meta HTTP-EQUIV=“Content-Type” CONTENT=“text/html; charset=UTF-8”>

37

Page 38: 情報基礎 - Osaka City Universityk-abe/joho-kiso/johokiso-char.pdf · American National Standards Institution (米国国家標準協会) lアメリカで必要な文字を集めて7ビットで表現

l HTMLでは,文字をUnicodeで指定できるU+3042 “あ” はHTMLで以下のように表現&#12354; 10進指定&#x3042; 16進指定Unicode文字をキーボードで直接入力できない場合などに便利(HTMLファイル自体のエンコーディングとは無関係)

Webページと文字コード (2) 38

Page 39: 情報基礎 - Osaka City Universityk-abe/joho-kiso/johokiso-char.pdf · American National Standards Institution (米国国家標準協会) lアメリカで必要な文字を集めて7ビットで表現

l 原則として7ビットコードを使うl 電子メールの世界では様々なエンコーディングが使用され

ているため,本文のエンコーディングをヘッダ部で指定l 日本語では ISO-2022-JP が標準

いわゆる半角カナは使えない(最近は UTF-8 が使われる場合も多い)

l 電子メールソフトで「ヘッダの表示」をしてみよう

電子メールと文字コード

Date: Thu, 09 Oct 2003 12:01:22 +0900From: Kota Abe <[email protected]> Content-Type: text/plain; charset=ISO-2022-JPContent-Transfer-Encoding: 7bit

39

Page 40: 情報基礎 - Osaka City Universityk-abe/joho-kiso/johokiso-char.pdf · American National Standards Institution (米国国家標準協会) lアメリカで必要な文字を集めて7ビットで表現

l 文字コードを扱う関数code(文字列)文字列の先頭文字のASCIIコードまたはJISコードを返すcode(“A”) = 65

char(値)値をASCIIコードまたはJISコードに対応する文字に変換するchar(65) = “A”

l 16進数を扱う関数hex2dec(文字列) 16進数を10進数に変換hex2dec(“10”)=16

dec2hex(値) 10進数を16進数に変換dec2hex(10)=“A”

Excel参考資料 40

Page 41: 情報基礎 - Osaka City Universityk-abe/joho-kiso/johokiso-char.pdf · American National Standards Institution (米国国家標準協会) lアメリカで必要な文字を集めて7ビットで表現

l 符号化および復号とは何かl 情報を送る側と受け取る側で異なる文字コードを用いていた場合,何が起きるか

l ASCIIコードとは何かl 制御コードとは何かl ISO-2022-JPではどうやって複数の文字コードを切り替えているか

l 日本語の電子メールで主に使われるエンコーディングは何か

l なぜUnicodeが開発されたのか

理解度確認 41