テキストファイル・HTMLなどの文字コードと改行コードについてメモ
投稿日:2017年02月07日
最終更新日:
もくじ
- 文字コードについて
- 改行コードについて
- シチュエーション別文字コード・改行コード
文字コードについて
コンピューターが0と1(2進数)しか扱えないのは皆様もご存知だと思います。そこで文字をある一定のルールで符号化することにより、コンピューターで文字を取り扱えるようにしています。このとき、文字ごとに割り当てられる符号(バイト表現)が文字コードです。文字コードは様々な種類があり、文字の書き手と読み手が同じ文字コードを使用していなければ、いわゆる「文字化け」が発生します。同じアルファベットを使用していても、英語で書かれた文章をイタリア語やフィンランド語のルールで読んだらおかしなことになるでしょう。コンピューターの世界でもそれと同じようなことが起こります。
現在使用されている主な文字コードには、以下の様なものがあります。
- UTF-8 現在HTMLなどで広く使用されている。「BOMあり」と「BOMなし」の2種類があるが、基本的には「BOMなし」を使用する。
- Shift-JIS 日本語(かな文字・漢字)を含む文字列を表現する際に使われる。テキストエディタ等でデフォルトの文字コードがこれの場合もないわけではない。
- ASCII アルファベットや数字、記号を表現できる。かな文字や漢字には対応していないが、多くのコンピューターで扱うことが出来る。
- EUC-JP UTF-8などと比べると見かける機会は少ないが、UNIX系のOSを使用する場合はこの文字コードを使用したファイルに遭遇するかもしれない。
なお、文字コードは「文字集合」と「符号化方式」という2つの要素から構成されています。「文字集合」は表現する文字(アルファベット、かな文字、漢字など)の範囲であり、「符号化方式」は文字に対する符号(数値)の振り方です。ある文字コードを作るときは、その文字コードで表現する文字の範囲(文字集合)を決め、次に個々の文字と符号の対応(符号化形式)を決めます。
「Unicode」と「UTF-8」がごちゃごちゃになることもありますが、それについてもかんたんに解説します。「Unicode」は世界中の文字を収録した文字コードの規格であり、「世界中の文字を収録した文字集合(理想的には)」と幾つかの符号化形式が定められています。「UTF-8」はUnicodeで使用されている文字集合を表現するための符号化形式の一つであり、他に「UTF-16」「UTF-32」などがあります。
改行コードについて
改行コードは、テキストファイル等で改行を表す制御文字です。現在使用されているものは以下のとおりです。
- CR+LF Windowsで使用
- CR 古いMacで使用
- LF Linuxや新しいMacで使用
まあ、文字コードとは異なり、改行コードは普段パソコンを使用する上ではそこまで目くじらを立てる必要がない部分ではあります。「郷に入りては郷に従え」といったところでしょうか。ちなみに、サーバー・クライアント間でFTPを使用してファイルをやり取りする場合、「ASCIIモード」を使用すれば、受信側の環境に合わせて改行コードを自動で適切なものに変換してくれます。
シチュエーション別文字コード・改行コード
「で、結局文字コードや改行コードは何を使えば良いのか?」ということになります。私の場合は、以下のように使い分けています。
- ソフトの側で指定されていれば、その文字コード・改行コードを使用
- 基本的には「UTF-8」+「CR+LF」
- PHPコードや.htaccessなどは「UTF-8」+「LF」
参考リンク