文字コードとは、端末上で文字の表示をするために必要なもので、今こうして記事を配信し、届けることができるのも文字コードがあればこそです。
ソフトフェアエンジニアになったとき、程度の違いはあれど、多くの人が「文字コード(Character code/キャラクターコード)」の知識が必要となります。
切って離すことのできない、文字コードについて、基礎的な知識をご紹介します。
文字コードとは
文字コードは、1文字1文字に番号を割り当てた、通し番号ようなものです。
この通し番号を通じて、文字や記号の入力や出力を行っています。
例として、文字コードの一つである、ASCII(アスキー)を挙げてみます。
「A」という文字を表示する場合、ASCIIの文字コードは「65(10進数)」です。
プログラムは、文字コードがASCIIで65という情報を受け取り、ASCIIで65に割り振られたフォントを呼び出して、描画しています。
文字を表示するには、文字コードとフォントが必要不可欠ということになります。
文字コードの種類
文字コードは、いくつかの種類があり、それぞれの特徴があります。
代表的な文字コードについて、ご紹介します。
ASCII(アスキー)
最も基本的な、文字コードで、7ビットの1バイトの文字コードです。
英語を表現するのに必要な文字だけが収録されています。
Shift_JIS(シフトジス)/SJIS(エスジス)
2バイトの文字コードで、日本語環境では、広く普及している文字コードです。
UTF-8(ユーティーエフエイト)
世界中の文字の収録を試みた文字コードです。
ASCIIとの互換性もあり、広く利用されています。
文字化けする理由とコードによるトラブル例
文字コードによって、規格(この記事でいう、文字ごとに割り当てられた番号のルール)が異なるため、文字コード不一致によるトラブルが発生する場合があります。
文字コードの知識が必要となるのは、こうしたトラブルへの対応や、トラブルを回避するためです。
代表的なトラブルについて、ご紹介します。
文字化け
プログラムは問題なく表示されているけれど、コメントの日本語が文字化けして読めない、ということも。
この場合は、英数字のみ文字コードの互換性があって、たまたま表示されているだけであるため、文字コードを正しく指定して表示する必要があります。
文字化けは、パターンがいくつかあります
- 保存したファイルの文字コードと、表示(解釈)に使用した文字コードが、不一致の場合
- 保存したファイルの文字コードと、プログラム(HTMLなど)で、指定した字コードが、不一致の場合
- 機種依存文字を、他の機種で表示した場合
文字化けの基本的な対策は以下の通りです。
- 文字コードを明示的に指定する
- 環境依存文字を使用しないこと
文字化けが発生し場合には、まず、ファイルやツールが使用している文字コードを確認して、文字コードを合わせる方法を確認していきましょう。
改行コード
改行コードは、Wordなどで「⏎」という記号を目にすると思います。
ごれは改行コードのひとつである「CRLF」を表しています。
改行コードには「CR」「LF」「CRLF」という種類があり、1つのファイルに複数の改行コードが存在すると、主にテキストデータ(テキストデータやCSVファイルなど)を編集するプログラムで、思わぬトラブルが発生することがあります。
トラブルを回避するには、改行コードを統一しておく必要があります。
改行コードを一括置換などして、改行コードの種類を揃えておきましょう。
コンパイルエラー
例えば、Javaの場合、使用する文字コードは、Unicodeと決められているため、Unicode以外の文字コードでプログラムを作成した場合、コンパイルエラーとなります。
紹介した文字コードの中では、文字コードをUTF-8で作成したプログラムは、コンパイルが通りますが、Shift_JISで作成したプログラムは、コンパイルエラーとなります。
これは、UTF-8が、Unicode系の文字コードであり、Shift_JISは、Unicode系の文字コードではないためです。
ファイルが、どの文字コードで作成されているか確認する方法は、使用するツールによって異なるため、検索してみてください。
おわりに

文字コードの基礎知識を紹介しました。
一見、プログラムの知識と関係のないように思えますが、文字コードを知ることで、文字コードに関連するトラブルの発生を未然に防ぎ、より良い品質のソフトフェアを開発することができるようになります。