「縺薙s縺ォ縺。縺ッ」
メールを開いたら、「縺薙s縺ォ縺。縺ッ」のような、読めない文字が並んでいました。
見たことがありますか。これは、文字化けといいます。
コンピュータは、文字をどのように覚えているのでしょう。そして、なぜ化けるのでしょう。今日は、その秘密を学びます。
今日のキーワード
| ことば | いみ | れい |
|---|---|---|
| 文字コード | 文字に、番号をつけた決まりです。 | Aは65 |
| ASCII | アルファベットや数字、記号に、番号をつけた古い決まりです。128個あります。 | A、b、7、? |
| Unicode | 世界中の文字に、番号をつけた決まりです。日本語も入っています。 | あは12354 |
| UTF-8 | Unicodeの番号を、バイトにして保存する方法です。 | ウェブページで多く使います |
| 文字化け | 決まりがちがうせいで、文字が正しく出ないことです。 | 縺薙s縺ォ縺。縺ッ |
| バイト | 8ビットをまとめた単位です。 | 1バイトは256通り |
学生が入力するセルは、このプレビューでは空白です。
文字は、番号で覚える
コンピュータの中には、0と1しかありません。文字は入れられません。
そこで、文字ごとに番号を決めておきます。文字を保存するときは、番号を保存します。
表示するときは、番号から文字を取り出します。この番号の決まりが、文字コードです。
やってみよう: 文字の番号
# Python は6章で学びます。今は、動かして結果を見るだけで大丈夫です。
# ord() は文字の番号を、chr() は番号の文字を教えてくれます。
print(ord("A"))
print(ord("B"))
print(chr(67))
print(ord("a"))
print(ord("あ"))
# "A" を、好きな文字に変えて、実行しましょう。
例: 文字と番号
| 文字 | 番号 | 二進数(8桁) |
|---|---|---|
| 0 | 48 | 00110000 |
| 1 | 49 | 00110001 |
| A | 65 | 01000001 |
| B | 66 | 01000010 |
| C | 67 | 01000011 |
| a | 97 | 01100001 |
| b | 98 | 01100010 |
学生が入力するセルは、このプレビューでは空白です。
1文字が1バイト: ASCII
最初に作られた決まりが、ASCIIです。英語の文字、数字、記号で、128個です。
1文字を、1バイト(8ビット)で表します。「A」は65で、二進数なら01000001です。
大文字のAと小文字のaは、別の番号です。aはAより32大きくなっています。
小さな確認: 表を読む
やってみよう
小さな確認: 表を読む
4問挑戦してみましょう。回答はここで採点され、その後は保存されません。点数を残したい場合や、続きから再開したい場合はログインしてください。ログインして点数を保存
答えはここで採点され、保存されません。アカウントがあれば、結果が残ります。
日本語や世界の文字: Unicode
ひらがな、カタカナ、漢字は、数千もあります。1バイト(256通り)では足りません。
世界中の文字に番号をつけた決まりが、Unicodeです。「あ」は12354番です。
その番号を、バイトにして保存する方法が、UTF-8です。日本語は、1文字が3バイトになります。
例: UTF-8のバイト数
| 文字列 | 文字の数 | 1文字あたり | バイト数 |
|---|---|---|---|
| Hello | 5文字 | 1バイト | 5バイト |
| ABC | 3文字 | 1バイト | 3バイト |
| あい | 2文字 | 3バイト | 6バイト |
| 日本語 | 3文字 | 3バイト | 9バイト |
| こんにちは | 5文字 | 3バイト | 15バイト |
学生が入力するセルは、このプレビューでは空白です。