文字コード 情報処理3 今井孝明.

Slides:



Advertisements
Similar presentations
2009/11/10 10 進数と r 進数を相互に変換できる コンピュータのための数を表現できる 2進数の補数を扱える コンピュータにおける負の数の表現を説明で きる コンピュータでの演算方法を説明できる 文字や記号の表現方法を示せる 第7回 今日の目標 § 2.2 数の表現と文字コード.
Advertisements

7章 情報の表現と基礎理論. 数の表現(書き方) 「数」と「数の書き方」をわけて考える 「数の書き方」と,「数そのものの性質」は別のもの 例:13 は素数・・・”13”という書き方とは無関係 ここでは書き方(表現方法)について考える 567.
位置情報と私 木村岳文 / 位置情報と私 / はじめに GPS 付き携帯、ハンディ GPS などを使っ て、お手軽に自分が地球上のどこにいる かを調べられるようになってきました。 このデータをつかって何かおもしろいこ とができそうな予感。 具体的にどうしたらおもしろいかはよく.
Windows 環境から SAS を使う 長野 祐一郎 1. データのダウンロード 2. データの加工 3. プログラムの作成 4.TeraTerm によるプログラムの実行 5. 処理結果の確認 6.SAS のデータ処理を概観 今回の授業では、 Windows 環境で作成されたデータを.
2.5 プログラムの構成要素 (1)文字セット ① ASCII ( American Standard Code for Interchange ) JIS コードと同じ ② EBCDIC ( Extended Binary Coded Decimal for Information Code ) 1.
基本編の用語説明 その2 エディタと日本語入力 エディタ  エディタ (editor) :文書を作成、編集する アプリケーションソフトウェア  教育用計算機システムのエディタは、 テキストエディット テキストエディット  基本的な編集方法はここここ  カーソル:文字が入力される位置を表している目印.
第6回 JavaScript ゼミ セクション3-6 発表者 直江 宗紀. 組み込み関数  JavaScript に予め用意された関数  特定のオブジェクトに依存していない  単に関数名で呼び出すことが可能.
T2V 技術 Web 製作ラボ 3/ hayashiLabo 2. T2V 技術 PC 操作 念のため・・・
Copyright © the University of Tokyo 文字化けの背景を知る. Copyright © the University of Tokyo 課題の概要 日本語の文字コードについて理解を深める  MacOS( テキストエディット ) で利用可能なエ ンコーディング ( コード化方式.
Copyright © the University of Tokyo 文字化けの背景を知る. Copyright © the University of Tokyo 課題の概要 日本語の文字コードについて理解を深める  MacOS( テキストエディット ) で利用可能なエ ンコーディング ( コード化方式.
1B コンピュータとビット列データ.
基本情報技術概論(第2回) 埼玉大学 理工学研究科 堀山 貴史
情報処理3 アプリケーション プログラミング 今井孝明.
プログラミングとは Q.プログラムとは何か? A.コンピュータを制御するための,コンピュータに対する命令(指示)の集まり.
『基礎理論』 (C)Copyright, Toshiomi KOBAYASHI,
Unix の ファイルシステム(File System)
富山大学 公開講座 2008 「QRコードを作ろう!」 ~ QRコードを作ろう! ~.
文字列検出ツール "istrings" の使い方
「情報」 (中村) オリジナル PPT (2010/05/07) 1 1.
情報処理の基礎 私たちとコンピュータの扱うデータの違い 明治学院大学 法学部消費情報環境法学科 鶴貝 達政
Java I 第2回 (4/18)
第3回 ファイルとフォルダ 伊藤 高廣 計算機リテラシーM 第3回 ファイルとフォルダ 伊藤 高廣
コントロールパネル ◎コントロール パネル: コンピュータのさまざまな機能を設定するための画面
JavaによるCAI学習ソフトウェアの開発
キーボードでの指の位置と入力範囲 ◎左手の指のホームポジション(入力しないときの位置): 小指-「A」 薬指-「S」 中指-「D」 人差し指-「F」(突起あり) ◎右手の指のホームポジション: 人差し指-「J」 (突起あり) 中指-「K」 薬指-「L」 小指-「;」 ◎親指は「スペース」キーの上に置く。
情報工学基礎(改訂版) 岡崎裕之.
システムプログラミング 第5回 情報工学科 篠埜 功 ヒアドキュメント レポート課題 main関数の引数 usageメッセージ
基礎プログラミングおよび演習 第9回
第5回 ディジタル回路内の数値表現 瀬戸 ディジタル回路内部で,数を表現する方法(2進数)を学ぶ 10進数⇔2進数⇔16進数の変換ができる
コードの歴史 ASCII(American Standard Code for Information Interchange)  ANSI ISO 646 = 95文字のラテン文字 アルファベット+数字+特殊文字 制御コード: LF, CR などの表示制御と   ACK,DEL などの通信制御 、など.
コーパス言語学実践 2006年度2学期 第5回.
プログラミングとは Q.プログラムとは何か? A.コンピュータを制御するための,コンピュータに対する命令(指示)の集まり.
コンピュータ基礎実習上級 #11画像ファイルと文字のフォーマット
第2章 ソフトウェアの基礎知識.
心理学情報処理法Ⅰ コンピュータにおけるデータ表現 マルチメディアとコンピュータ.
文字化けの背景を知る.
プログラミング言語論 プログラミング言語論 プログラミング言語論 演習1 解答と解説 演習1解答と解説 1 1.
キーボードでの指の位置と入力範囲 ◎左手の指のホームポジション(入力しないときの位置): 小指-「A」 薬指-「S」 中指-「D」 人差し指-「F」(突起あり) ◎右手の指のホームポジション: 人差し指-「J」 (突起あり) 中指-「K」 薬指-「L」 小指-「;」 ◎親指は「スペース」キーの上に置く。
2008年度 情報数理 ~ QRコードを作ろう!(1) ~.
コンピュータリテラシー 広島工業大学 知的情報システム工学科 張 暁華 2003年.
Outlook メール文字化けの原因と対策
1.コンピュータと情報処理 p.14 第1章第1節 1.わたしたちの生活と情報技術 情報機器の発展 情報機器は,アナログデータから
補数 n:桁数、b:基数 bの補数 bn-x 253(10進数)の10の補数は、 =747
報告4:蔵書評価における文字コード問題について
情 報 A ー ディジタル化のしくみ ー.
2010年度 情報数理 ~ QRコードを作ろう!(1) ~.
文字化けの背景を知る.
文字化けの背景を知る.
情報工学科 3年生対象 専門科目 システムプログラミング 第5回、第6回 ヒアドキュメント レポート課題 情報工学科 篠埜 功.
コンピュータを知る 1E16M009-1 梅津たくみ 1E16M017-8 小沢あきら 1E16M035-0 柴田かいと
図書館システムと日本語との 格闘の歴史(過去、現在、未来) -CALISを中心にして-
第二回 VB講座 電卓を作ろう.
独習XML 第2章 XML文書の構成要素 2.1 XMLの文字と文字列 2.2 コメント
文字の表現.
第4回 コンピューティングの要素と構成 平成22年5月10日(月)
Ibaraki Univ. Dept of Electrical & Electronic Eng.
情報処理概論Ⅰ 2007 第10回 2007/6/27 情報処理概論Ⅰ 第10回.
文字エンコーディング 2010年7月.
第2章 ソフトウェアの基礎知識 電子制御設計製図Ⅰ    2010年5月19日 Ⅱ限目.
地域情報学 C言語プログラミング 第1回 導入、変数、型変換、printf関数 2016年11月11日
基本情報技術概論(第2回) 埼玉大学 理工学研究科 堀山 貴史
第1章 いよいよプログラミング!! ~文章の表示 printf~
コンピュータアーキテクチャ 第 3 回.
5.チューリングマシンと計算.
プログラミング入門 電卓を作ろう・パートI!!.
基本情報技術概論(第13回) 埼玉大学 理工学研究科 堀山 貴史
日本語独特のL10N問題とは? 各社仕様の拡張文字 複数の符号化 規格の混乱など Unicodeとのマッピング
オペレーティングシステム 作成 T21R003 荏原 寛太.
CADシステムとソフトウェア 電子制御設計製図Ⅰ    2009年4月28日 Ⅲ限目.
情報処理Ⅱ 第2回 2004年10月12日(火).
Presentation transcript:

文字コード 情報処理3 今井孝明

文字は0と1へ変換されて記録される コンピュータの内部では文字などのデータは0と1へ変換されて保存される。例えば A ⇨ 01000001 B ⇨ 01000010 C ⇨ 01000011 ! ⇨ 00100001 $ ⇨ 00100100 という感じである。

変換の仕方は何通りかある 同じ文字でも0と1へ変換する仕方は何通りかある この変換の仕方を文字コードという 明 ⇨ 0110011 00001110 (Windows) 明 ⇨ 11100110 10011000 10001110 (iPhone) 明 ⇨ 11100110 10011000 10001110 (Android) 同じ文字でも0と1へ変換する仕方は何通りかある この変換の仕方を文字コードという

文字コード iPhoneとAndroidは同じ文字コードを使っている 明 ⇨ 0110011 00001110 (Windows) ←UTF-16 明 ⇨ 11100110 10011000 10001110 (iPhone) ← UTF-8 明 ⇨ 11100110 10011000 10001110 (Android)  ← UTF-8 iPhoneとAndroidは同じ文字コードを使っている

代表的な文字コード Shift-JIS (cp932) 昔のパソコン、windowsのメモ帳、コマンドプロンプト、携帯の大部分、日本語しか扱えない EUC-JP 昔の大きなコンピュータ、ちょっと昔のホームページ UTF-8 最近のホームページ、iPhone、Perl、JAVA、世界中の言語を扱える UTF-16 Windows内部、世界中の言語を扱える

文字コードによって使える文字が決まっている 昔の日本のパソコンメーカーだったら日本語だけを扱えるコンピュータをつくればよかった。    日本語 {あ,い,,,,ア,イ,,,一,二,三,,,} 昔の日本のパソコンで使われていた文字コードであるShift-JISにはドイツ語の文字äを0と1に変換する方法は存在しない。    ä → × 文字コードで使える文字の種類を文字集合(文字セット)という。 Shift-JISとEUC-JPは文字集合は同じであるが、0と1を割り当てる方法が異なる。文字に0と1を割り当てることを符号化という。 現実的にはありえないが説明のための簡単な例として 2文字{ A , B }だけの文字集合を考える。 A=0,B=1 とすることも可能であるし、 A=1,B=0 とすることも可能である。 このように同じ文字集合に0,1を割り当てる方法はいろいろある。 昔どこかのおじさんが決めたShift-JISの一覧表、EUC-JPの一覧表が存在するのでそれを見れば特定の文字を0と1に変換する方法がわかる。 「文字集合」と「符号化」を合わせて文字コードという。

Unicode (UTF-8,UTF-16) 鷗,頰,𠮷,,, ✡, é,à,è,ù,ç,œ,ê,ï,â ä,ö,ü,ß, 태연,,, など10万文字以上 cp932 (Windows-31J) 彅,仡,仼,,,など7517文字 JIS X 0208 (Shift-JIS,EUC-jp) 山,川,犬,猫,辺,,,,など7070文字

ユニコード Shift-JIS(cp932),EUC-JPは日本語を表すことはできるが、日本語とドイツ語と中国語の混在した文章を表すことができない。 世界中の全ての文字を集めた文字集合を使うことにすればどんな言語でも扱えるようになり、都合がよい。 {あ,い,,,,ア,イ,,,一,二,三,,, Б,Д,Ж,,,, α,β,γ,,,태연,,,} この文字集合をユニコードという。日本語からは第1,2水準漢字以外にも第3,4水準漢字も収められている。 符号化の仕方によって、UTF-8,UTF-16,UTF-32,UCS-2 などいくつか種類がある。

Shift-JISとEUC-JP Shift-JIS,EUC-JPはJIS第一水準、第二水準合計約6800の漢字を使える Shift-JIS (cp932) 1~2byte A 01000001 明 10010110 10111110 EUC-JP 1~2byte A 01000001 明 11001100 11000000

Shift-JISとcp932の違い Shift-JISを拡張したものがcp932であり、ほとんど一緒であるが、ちょっとだけ違う。 ほとんど一緒なのでcp932はShift-JISと表記されることもあり紛らわしい。Windowsのメモ帳はShift-JISと表記されているが、正しくはcp932である。

ユニコード2 WindowsはUTF-16が使われている。 (しかし、昔のWindows日本語版はShift-JIS(cp932)を採用していたので、現在でもコマンドプロンプトやメモ帳では特に指定しなければShift-JIS(cp932)が使われるので注意が必要である。) 最近のLinux,Mac OS,Perl,JAVAはUTF-8を使っている。 古いシステムやプログラムはユニコードに対応していない。 将来的にはユニコードに統一されていくと思われる。

bit 0と1の文字1つを1bit(ビット)という。 0 1bit 1 1bit 00 2bit 01 2bit 10 2bit 11 2bit 100 3bit

byte コンピュータ内部では英数字は8bitで表現される。8bitを1byte(バイト)という。 A 01000001 8bit = 1byte

2進数と16進数 0と1だけで表現すると長くなるので 4つの0,1を右のように1つの 文字に置き換える 0000 0001 1 0010 2 0011 3 0100 4 0101 5 0110 6 0111 7 1000 8 1001 9 1010 A 1011 B 1100 C 1101 D 1110 E 1111 F 0と1だけで表現すると長くなるので 4つの0,1を右のように1つの 文字に置き換える 4bitづつに分けて置き換える。 明 ⇨ 10010110 10111110 (Shift-JIS) 9 6 B E 0x96BE と書いたり 0x96 0xBE と書いたりする 0と1だけを使って書く方法を2進数という 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,Fの16文字 を使って書く方法を16進数という

Shift-JISの調べ方 「明」という文字をShift-JISで変換したらどうなるか調べよう。 http://www.seiai.ed.jp/sys/text/java08/shiftjis_table.html にある一覧表から「明」を探す。 96B0の最後の0をEに置き換えて、96BEとなる。

UTF-8の調べ方 「明」という文字をUTF-8で変換したらどうなるか調べよう。 http://www.fileformat.info/info/unicode/char/search.htm をひらき「明」を検索する。 となることがわかる。 (hexは16進数のことbinaryは2進数のこと)

use utf8; ⇦ プログラムをUTF-8で書いたことを表す (秀丸で作成) UTF-8 ActivePerl UTF-8 コマンドプロンプト cp932

Alphabetはほとんどの文字コードで符号化が同じ Shift-JIS(cp932)でもUTF-8でもEUC-JPでもalphabetの符号化は同じである。 A 01000001 (1バイト) よってalphabetしか使わない限りは文字コードの違いを意識しないでも困らない alphabetしか使わないアメリカ人の作ったプログラムは文字コードの違いを考慮していないものがある。

制御文字 Enterや、タブなども Enter 00001101 00001010 タブ 00001011 のように0と1の集合として記録される。 リターンやタブは通常の文字と異なるので制御文字と言われる。

課題 以下の問いに答えよ。答えはメールの本文に書いてください。 問題1. 1バイトは何ビットか? 問題2. 自分の名前をShift-JISで変換するとどうなるか。2進数で表現した場合と16進数で表現した場合の両方を答えよ。 問題3. 自分の名前をUTF-8で変換するとどうなるか。2進数で表現した場合と16進数で表現した場合の両方を答えよ。

日本語は1byteでは足りない アルファベットは26個である。小文字を含めても52個である。その他、.や?などを入れても、1byteあれば十分である。 しかし、日本語は256個では足りない。 コンピュータは主にアメリカで発達したものであるので、基本はアルファベットにしか対応していないものが多い。 日本語の文字を扱うための方法は後からつけ加えられた。

Shift-JIS(cp932)とUTF-8 例えば、秀丸などで「明治」と書いて保存したとしよう。 CP932

改行(Enter)について1 改行(Enter)はタイプライターの時代から使われていた。 タイプライターは、1文字打つごとに紙全体を左へずらしていく。文章が紙の右端まで来たら、次の行に行くために 紙全体を元に戻し(キャリッジリターン,CR) 紙を上方に1行分ずらす(ラインフィード,LF) 必要がある。 なそ、キャリッジとはタイプライター(印字端末)で紙を固定する装置のことである。 この用語が、コンピュータにも採用された。

改行について2 Windowsでは改行をCRを表す00001101とLFを表す00001010とを合わせて表現する。 そもそも「タイプライター」という装置が、1行進める作業と左に戻す作業が別々に存在したことを引きずっているわけである。 Unix系のOSではLFを表す00001010だけで表現する。 Mac OSでは改行をCRを表す00001101だけで表現する。

例 例えば、 open ( FILE1 , ”>” , text.txt ); print FILE1 “A\n”; close ( FILE1 ); とすると、text.txtには 01000001 00001101 00001010 A CR LF と書きこまれる。