文字コードについて解説

こんにちは。HYPER CUBEの佐藤と申します。
さて、みなさんは「タク」と聞いて何を思い浮かべるのでしょうか。
テーブルを意味する「卓」かもしれませんし、選択の「択」を思い浮かべる人もいるかもしれません。韓国語では「タク」は「鶏」を意味します。
こういった実際の音と、その意味するところはばらばらで、その時々によって意味がかわります。
デジタル世界でもこのようなことが起き、その際に「文字コード」というルールを指定して解決をしています。
ということで、今回は文字コードとは何なのかをまとめさせて頂こうと思います。

文字コードとは

文字コードとは何なのかを一言でいうと、「そのバイト値が何の文字を表すのかをまとめた表」になります。
パソコンなどの電子機器はデータを01の数値で持つことしかできず、文字の情報自体を持っていません。
例えば、テキストファイルをバイナリエディタで開くと0x1F0x2F..といった16進数の羅列になっています。
このファイルをテキストエディタ等で開いたとき、エディタ側では16進数の構造から文字コードを自動的に判別します。
そのデータ内の16進数と、判別された文字コード表と見比べることで、データが文字コード表の[あ]に当たるから[あ]を画面に表示する。。というような変換処理が行われています。

文字コードの種類

世の中にはたくさんの文字コードが存在しますが、(日本においては)とりあえずこれだけ知っておけばよいかと思います。
詳細につきましては、インターネット上の諸先輩方の情報をおググりいただければと思います。。

  • ASCII
  • JIS
  • Shift_JIS
  • ECU_JP
  • UTF-8

エンコードに失敗した場合

文字コードの指定に失敗した場合、どのようなことが起こるのでしょうか。
一般的には「文字化け」という、何が書いてあるのか分からない状態になります。
VSCodeというエディタでは、文字コードの指定を変更できるため、その再現が可能です。

こちらは、文字コード[UTF-8]で記載されたテキストファイルです。
(右下にUTF-8の記載があります。)

こちらをエディタ上の文字コードを[Shift_JIS]に変更します。

すると、このように書いてあるのか分からない状態(文字化け)となります。

この時、テキストデータ自体は変更がされていないのですが、文字コードが変わることで、読み取ることが出来なくなります。
この場合は、文字コード指定を再度[UTF-8]に変更することで元の表示に変わります。

なお余談となりますが、Webブラウザでのテキスト表示は、この文字コード変換がよく問題になっておりました。
Google Chrome,Fire Fox,Internet Explorer等の各ブラウザで、メニューから文字コードを手動で変更する機能がございましたが、昨今の技術の進歩により文字コードの自動判別の精度が高まったため、手動変換機能は無くなっておりました。
いささかさみしいものを感じます。

まとめ

今回は文字コードついてまとめました。
ブラウザでの表示も自動変換となった今、文字コードが問題となる場面は少なくなっているかと思います。
基本的にはフロント側、サーバー側どちらも[UTF-8]を利用するなど、文字コードを統一することが大事になっていくかと思います。

本日はこの辺りで失礼いたします。
HYPER CUBE佐藤でございました。
また機会がありましたらよろしくお願いいたします。