🔡

文字をコンピュータで扱うための変換

2024/08/07に公開

導入

私たちは普段10進数の数値/文字/色などを扱いますが、
コンピュータは2進数しか理解できません。

コンピュータで2進数を使う理由については以下ご確認ください。
https://zenn.dev/417yr/articles/c6b0dce4804874

よって、10進数の数値/文字/色などをコンピュータで理解してもらうためには、
2進数に変換する必要があります。

エンコード / デコード

エンコード(符号化):コンピュータが理解できる方式に変換すること
デコード:人間が理解できる方式に変換すること

10進数の数値を、コンピュータで扱うための変換については以下で説明しています。
https://zenn.dev/417yr/articles/6b37e09679393e

ですので今回は、
文字をコンピュータで扱うための変換について説明していきます。

文字をコンピュータで扱うための変換

  • 符号化文字集合(Coded Character Set)
    • 文字と識別子(一意な数値)を対応させたもの
    • 対応表をイメージするとわかりやすい
  • 文字符号化方式(Character Encoding Scheme)
    • 文字集合で定義した識別子と、コンピュータが理解できる形式を対応させたもの
    • 対応表をイメージするとわかりやすい

ASCII

  • 2^7=128通りの文字/記号にしか対応していません
    • 対応表としてイメージするならば、128行しかないので日本語や中国語には対応していません

Unicode ↔︎ UTF-8

  • Unicode
    • 符号化文字集合の一種
    • Unicodeにて、文字に割り当てられる識別子のことをコードポイントと呼びます
    • 世界中の言語で使われる文字を表現することができる
  • UTF-8 / UTF-16 / UTF-32
    • 文字符号化方式の一種
    • コードポイントをコンピュータが理解できる形式に変換していきます

JIS X 0208 ↔︎ JISコード(ISO-2022-JPのこと)

  • JIS X 0208
    • 符号化文字集合の一種
  • JISコード(ISO-2022-JPのこと) / Shift_JIS
    • 文字符号化方式の一種

文字化け

例えば、エンコード時とデコード時で、異なる文字符号化方式を利用した際に発生します。

  1. Aさんが、テキストデータを「UTF-8」を利用して作成する(つまりエンコードにUTF-8を利用)
  2. Bさんが、そのテキストデータを「Shift_JIS」を利用して開く(つまりデコード時にShift_JISを利用)
  3. 文字化けが発生

これは作成時とは異なる対応表を用いて変換しているので当然のことです。

文字化けについては以下もご確認ください。
https://zenn.dev/417yr/articles/8c316dd57334a9
https://zenn.dev/417yr/articles/9089f6c47a1e8d

補足

16進数が採用されている理由については以下をご確認ください。
https://zenn.dev/417yr/articles/953bb444a02859

参考

https://developer.mozilla.org/ja/docs/Glossary/Character_set

https://e-words.jp/w/文字コード.html

https://marunouchi-tech.i-studio.co.jp/1937/

Discussion