文字化けの原因って何?文字コードを知ろう

文字コードとは?

「あ」と画面上で表示される文字ですが、コンピュータ内では「あ」ではなく数値で保存されています。この「あ」とコンピュータ内の「数値」を対比させたものを文字コードと呼びます。

文字コードには様々な種類が存在しますが、2020年現在はプログラムの90%が文字コード「UTF-8」で書かれていると言われています。今後は文字コードを気にせずにプログラミングを行うシーンが増えることでしょう。

しかし「コンピュータの環境の違いによって様々な文字コードが使われる」ということは覚えておきましょう。以下いくつか文字コードを解説していきます。

UTF-8(Unicode)

UTF-8は2020年現在、世界でもっとも使用されている文字コードです。世界中の言語や記号を表すことができます。日本語では、ひらがな、カタカナ、漢字などを表すことが可能です。ただし世界中の文字を網羅しているわけではありません。しかし、このUTF-8がITで発生する数多くの問題を解決してくれたと言っても過言ではありません。

プログラミングやHTMLファイルを作成する際は、特殊な場合を除いてUTF-8で作成するとよいでしょう。

※UTF-8(ユーティエフエイト)は厳密には文字コードではなく文字変換方式ですが、エディタの設定では文字コードの1つとして項目が設けられています。ここでは便宜上、文字コードとして扱います。同じ理由でUnicode(ユニコード)も文字コードとして扱います。

ShiftJIS(SJIS)

ShiftJIS(シフトジス)は日本工業規格で定められた日本語の文字コードです。Windowsの日本語環境にこの文字コードが使われています。JIS(ジス)とは日本工業規格のことで、工業製品に関する規格などが定められた日本の国家規格のひとつです。

アスキーコード(Ascii)

アスキーという雑誌やアスキーアート(文字で書かれたイラスト)など、「アスキー」という言葉を一度は耳にしたことがあるかと思います。

⋀,,⋀  ⋀,,⋀
(  ・ω)σ)・ω・)
( つ旦 ノ ( つ旦O)
と_)_) と_)_)

アスキーコードとは、英語、数値、記号などで構成された7ビットの文字コードを指します。英語圏のエンジニアたちが、アスキーコードを使用して旧来のコンピュータを現代の実用的なコンピュータとして世界中に広めました。そのため、アスキーコードは現代のコンピュータの仕組みと密接に関わっています。

文字コード表を読んでみよう

例アスキーコード

さて、文字コードやコンピュータの基本的な仕組みに慣れるために、もっとも基本となるアスキーコードを試しに読んでみましょう。
以下にアスキーの文字コード表を記載します。

ascii-code

文字コード表の読み方

縦が4、横が1、で交わる個所に「A」があり、0041と65という2つの数字が書かれています。
二行目の0041は「A」を16進数で表したもので、三行目の65は16進数の0041を10進数に変換した数値です。

コンピュータは全てのデータを2進表現として扱いますので、画面上に「A」を表示させる為には「A」に対応する2進数の数値が必要です。

しかし2進数で文字コード表を作成した場合、記入する数値が大量に発生してしまうため、上記のように16進数に変換した数値を文字コード表として発表しています。

つまり「A」に対応する数値は「16進数の0041 = 10進数の65 = 2進数の01000001」となるのです。

16進数表記など聞き慣れない方には難しく感じるかもしれませんが、HTMLなどのRGP色を指定したり、コンピュータの住所であるIPアドレスを指定したりする際によく出てくる表現です。

数値変換の計算方法を知らずとも基本的なプログラミングは可能ですが、コンピュータにおける基礎数学(2進数の扱いや離散数理)を知ると、コンピュータの世界がよく理解できるでしょう。

文字化けが起こる原因は?

さて、パソコンを操作していると「文字化け」と呼ばれる現象を目にすることもあるかと思います。「文字化け」とは、テキストを読み込んだアプリケーションが文字コードを判別できなかった場合に発生します。

WEBページが文字化けすることを例に出して説明しますと、どの文字コードでページを読み込むべきかHTMLファイル内で指定しなかったり、なんらかの原因でテキストデータが壊れてしまった際に発生します。

つまり、文字化けは文字データと文字コード対応表の不一致が原因で起こるトラブルなのです。

point!!

文字データでないバイナリデータをWEBブラウザで開いたり、テキストエディタで開いた際に文字が読めない様に見えることがあります。しかしこれは「文字化け」ではありません。意図しないものが表示されたという意味では、広義の文字化けかもしれませんが、きちんと区別をしたほうがよいでしょう。バイナリデータはテキストデータではないので専用のソフトを通してファイルを開かなければ、読むことはできません。

文字コードまとめ

文字コードまとめ
  • 文字は0と1のデータ(数値)で二進表現として扱う。
  • 文字は文字コード表に対応して画面上に表示される。
  • アスキーコード(ASCII)、UTF-8(Unicode)、ShiftJIS(SJIS)など文字コードには種類がある。

にほんブログ村 IT技術ブログへ
にほんブログ村