UTF-8やShift-JISとかってたまぁ~~~~~に聞くけど・・・、
なにソレ!?
もしくは、
ソレなに!?
って思っていませんか?
文字コードを説明しだすと丸々一冊の本になっちゃうので・・・・、文字コードの初歩の初歩の初歩の、更に初歩の解説を、チョーーーーーーー簡単にサクッと説明しますね
※↓こんな感じで実際に丸々一冊の本になってます
- 文字コードが分からない
- UTF-8やShift-JISってなに?
- 文字コードを知りたいけど、かと言って難しい話はイヤ!
◆解決できるかも知れないお悩み
- 文字コードとはまではいかないけど、文字コードの仕組みの基礎知識
- UTF-8とShift-JISの違い
◆どうやって解決するか
- テキストファイル(UTF-8/Shift-JIS)を使って説明します
Contents
- こちらも合わせてお読み頂けると、理解が深まります
>> ビットマップファイルをテキストファイルで見る方法
>> [Win/Mac]バイナリファイルの中身をそ~っと覗いて見てごらん数字の羅列で目が泳ぐ
文字コードって何?
簡単に言うと、
文字コード = 数値と文字の対比表
です
コンピューターで文字を読んだり書いたりするためのルールみたいなモンですな
コンピューターが理解できるのは数値だけですし、ハードディスク(or SSD)に保存されるのも数値だけです
テキストエディタであ
という文字を入力して保存しても、実はハードディスク(or SSD)には数値だけが保存されているのです
決してあ
という文字そのものは保存されていません
でも、普段何の問題もなくコンピューターで文字使えてるやん!!
って思うでしょ?
それは、
コンピューターが、文字コードと呼ばれる数値と文字の対比表を使って変換してくれているだけなんです
コンピュータは数値しか理解できないけど、人間はコンピューターを介して文字をやり取りしたいんですよ
そしたら、数値を無理矢理文字に当てはめるルールを作るしか無いじゃないですか
文字を書いた人と文字を読む人、双方とも同じルール(←文字コードのこと)で数値を書いて読むということが必要になります
ポケベル世代の方なら、0840ってすぐ分かりますよね?
そうです「おはよう」です
それ以外にも、仲間内だけで決めた暗号のようなものを決めてなかったですか?
例えばですが、123ならいつものとこで会おうとか、456なら電話してねとか
それらも文字コードの一種みたいなものと言えば似たようなもんですね
Shift-JISという文字コード(数値と文字の対比表)の場合を見てみよう
130 160
という連続した数値を読み取る
↓
あ
という文字を画面に表示する
130 162
という連続した数値を読み取る
↓
い
という文字を画面に表示する
130 169
という連続した数値を読み取る
↓
か
という文字を画面に表示する
…というようなことをコンピューター君はやってくれています
参考URL
ただ、注意としては、コンピューターは特に
あ
という文字を認識している訳ではありませんあ
という形のものを表示しているにすぎないですフォントってインストールできますよね
>> [Windows]Googleフォントを自分のパソコンにインストールしよう!
そのフォントは誰かが作ったものですよね
で、どうやってそのフォントを作ったかと言うと、結局絵を書いたようなもんですよね
なので、コンピューターからしたら文字なのかどうかは知らない(って言うか文字という概念は無い)けど
「はいはい、あ
に相当する物をフォントという種類のファイルから探して、画面に表示したらいいんでしょ!?フンっ!」って感じでやってくれているだけです
数値 | 文字 |
---|---|
130 160 | あ |
130 162 | い |
131 65 | ア |
136 159 | 亜 |
130 96 | A(←全角) |
130 80 | 1(←全角) |
Shift-JISのテキストファイルの本当の正体を見てみよう!
- 先にこちらの記事を読んでおいてください
- WindowsとMacのバイナリエディタについて言及していますので、見ておいてね
- テキストエディタで
あ
を入力して保存- 改行は無しで
あ
の一文字だけを保存してください - ひらがな
- 全角
- テキストエディタで文字コードの設定ができると思いますが、Shift-JISにしてください
設定方法はお使いのテキストエディタのヘルプでご確認くださいVisual Studio Codeならこちらの記事を参考にしてください
- 改行は無しで
- バイナリエディタで保存したファイルを開きます
左側に見える82 A0
という数値がひらがなあ
の正体です!
82 A0
と130 160
について
82 A0
というのは16進数という手法(数の数え方)を使っています
普段私達が使っている10進数というごく普通の数え方なら130 160
になります
この記事では16進数については触れません
記事中では10進数に置き換えて記述しますので、あまり気にしないでください
UTF-8という文字コード(数値と文字の対比表)の場合を見てみよう
227 129 130
という連続した数値を読み取る
↓
あ
という文字を画面に表示する
227 129 132
という連続した数値を読み取る
↓
い
という文字を画面に表示する
130 139
という連続した数値を読み取る
↓
か
という文字を画面に表示する
…というようなことをコンピューター君はやってくれています
参考URL
数値 | 文字 |
---|---|
227 129 130 | あ |
227 129 132 | い |
227 130 162 | ア |
228 186 156 | 亜 |
239 188 161 | A(←全角) |
239 188 145 | 1(←全角) |
実際にテキストファイルの本当の正体を見てみよう!
- 先にこちらの記事を読んでおいてください
- WindowsとMacのバイナリエディタについて言及していますので、見ておいてね
- テキストエディタで
あ
を入力して保存- 改行は無しで
あ
の一文字だけを保存してください - ひらがな
- 全角
- テキストエディタで文字コードの設定ができると思いますが、UTF-8にしてください
設定方法はお使いのテキストエディタのヘルプでご確認くださいVisual Studio Codeならこちらの記事を参考にしてください
- 改行は無しで
- バイナリエディタで保存したファイルを開きます
左側に見えるE3 81 82
という数値がひらがなあ
の正体です!
E3 81 82
と227 129 130
について
E3 81 82
というのは16進数という手法(数の数え方)を使っています
普段私達が使っている10進数というごく普通の数え方なら227 129 130
になります
この記事では16進数については触れません
記事中では10進数に置き換えて記述しますので、あまり気にしないでください
ここまで読んでみて、もう一回見て欲しい
最初の方で出した図ですが、もう一度見てください
最初見たときより、意味が分かりやすくなってませんか?
さいごに、
僕も文字コードの事はよく分かっていなくて、現在勉強中です
この記事では、Shift-JISとUTF-8だけに絞って、更に簡単なことしか書いていません
文字コードの超々入門としてはこのぐらいがいいかなと思い、上っ面な事だけ書いています
昔はEUCとかShift-JISとか色々と文字コードがあって困らされましたが、最近はUTF-8で落ち着いてきましたね
今は個人的な使い方ならもうUTF-8だけで困ることは基本的には無いです
一般的な使い方なら、書いた側と読む側が同じ文字コードを指定すればいいだけですし、アプリが勝手に判断してくれるのであまり人間が意識する必要はないですね。
しかし…..仕事で使う日本語版WindowsのDOSがShift-JISじゃないとダメっていうのが面倒なんですよ
自宅でRubyとかPythonとかCとかJavaとかbatとかでプログラミングする際DOSプロンプトを多用するんですけど、UTF-8で書いちゃってしょっちゅう文字化けを起こしちゃいます
DOSがUTF-8に対応しろよ!とその度に思っています
※Windows10だともしかして対応してるのかな?
この記事が文字コードに対するあなたの理解の助けになれば嬉しいです
プログラミング のレッスンに興味がある方、レッスン内容を聞いてみたい方、なんなりとお問い合わせください。
無料体験レッスンもありますのでお気軽にどうぞ!!!
文字コードについて理解してないため調べていてこのサイト見つけました。
大変わかりやすくかつ自分で文字コードについて検証作業もでき理解ができました。
ありがとうございます。
お役に立てて良かったです。