文字コードとは?
文字コードとは、「文字」や「記号」をコンピューターで扱うために、文字に個別に割り当てた「固有の数値」を指します。
コンピューターは0と1の組み合わせでしか理解できないので、「あいうえお」という文字を表現したい場合はコンピューターが理解できるコードで処理する必要があるのです。
例えば「あ」という文字を表現したい場合、「10001」という番号が割り当てられていたら、最終的には2進数に変換されてコンピュータで処理されます。
このような「文字に数値を割り当てたもの」を文字コードと呼びます。
文字コードの種類
文字コードにはそれぞれ種類があり、日本語を表す文字コードはJIS、Shift_JIS、UTF-8などがあります。
- ASCII(アスキー)
- 米国規格協会(ANSI)によって定められた、基本的な文字コード
- アルファベットと数字、あとはいくつかの記号のみで、1文字を7ビットで表します
- ASCIIコード表
- EBCDIC(エビディック)
- IBM社が定めた文字コードで、8ビットを使って1文字を表します
- 大型の汎用コンピュータなどで使用されています
- シフトJISコード [S-JIS](エスジス)
- ひらがなや漢字、カタカナなどが扱える日本語の文字コード
- ACSIIのコード体系の文字と混合させて使用できるようになっている
- Windowsでも使用されており、1文字を2バイトで表します
- 文字コード表
- EUC(イーユーシー)
- UNIXというOS上でよく使用される日本語の文字コードで、拡張UNIXコードとも呼ばれる
- 基本的には1文字を2バイトで表しますが、補助漢字などでは3バイト使用します
- Unicode(ユニコード)
- 各国のありとあらゆる文字を1つのコード体系で表そうとした文字コード
- 当初は1文字を2バイトで表していたが、文字数が足りなくなり3バイト、4バイトと拡張されています
- ISO/IEC 10646として国際標準となっている
- IT用語辞典 e-Words | Unicodeとは – IT用語辞典
Unix系OS上のシェルでできるバイナリ体験例
テスト用にファイルを作成
$ echo "hoge" > test.txt
$ echo "fuga" >> test.txt
$ cat test.txt
hoge
fuga
$ od -c test.txt
0000000 h o g e \\n f u g a \\n
0000012
8進数で表示
$ od test.txt
0000000 067550 062547 063012 063565 005141
0000012
1バイト単位で16進数で表示
$ od -tx1 test.txt
0000000 68 6f 67 65 0a 66 75 67 61 0a
0000012
2バイト単位で16進数で表示
$ od -x test.txt
0000000 6f68 6567 660a 6775 0a61
0000012
1バイト単位で10進数で出力
$ od -tu1 test.txt
0000000 104 111 103 101 10 102 117 103 97 10
0000012
2バイト単位で10進数で出力
$ od -tu2 test.txt
0000000 28520 25959 26122 26485 2657
0000012
od コマンド | コマンドの使い方(Linux) | hydroculのメモ
UTF-8などを進数に変換
- VSCodeで16進数に変換
- 8〜16進数を2進数(8、10進数も可)に変換
- Mac : Command + Space => 「計算機」と検索 => 表示をクリック => プログラマに変更
追記(2021-05-17)
文字コードの種類として一括りで紹介しましたが、その中でも符号化文字集合と符号化方式に区分されるようです。
符号化文字集合とは、日本後のひらがなやカタカナ、英語やドイツ語などの文字をどのように表現して使えるかをリスト化したようなものです。
符号化方式とは、符号化文字集合を表現するために、実際にコンピュータが利用できるデータ列(バイト、ビット)に変換する方式です。

Unicodeは符号化文字集合で、UTF-8やUTF-16は符号化方式となります。
ただし、サーバのパラメータ等ではcharset = UTF-8
と書かれたりするように、符号化文字集合(charset) と 符号化方式(character encoding) を同じ意味で使うこともあります。
この2つの違いを理解しましょう。