文字コード
文字コードとは、コンピュータ上で文字を利用するために各文字に割り当てたバイトコードのこと。
文字コード | 説明 |
---|---|
ASCII | 7ビットで表現される。128種類の英数字、記号、制御コードで構成される。 |
Unicode | 32ビットで表現される。1つの文字コード体系で多言語処理を可能にするための文字コード |
UTF-8 | Unicodeを使用した文字コード。1文字を1バイトから6バイトで表示する。 |
EUC-JP | UNIX環境で標準的に使用していた日本語の文字コード |
Shift-JIS | WindowsやMacOSで使用される日本語の文字コード |
ISO-2022-JP | 電子メールなどでよく使用される日本語の文字コード(JISコード) |
ISO-8859 | ASCIIを拡張した8ビットの文字コードで256種類の文字を表現できる。 |
多くのディストリビューションでは、文字コードとしてUTF-8を使用している。日本ではいくつかの文字コードが混在しているのでWindowsで作成したファイルをLinuxで開くと文字化けすることがある。また、ディストリビューションによってはUTF-8以外の文字コードを使用しているものもあり、文字コードを変換させる必要がある。
文字コード変換コマンド
iconv [オプション] [ファイル名]
オプション | 説明 |
---|---|
-l | 変換できる文字コードの一覧を表示 |
-f 入力文字コード | 変換元の文字コード。from |
-t 出力文字コード | 変換後の文字コード。to |
-o ファイル名 | 文字コードを変換した文字列を出力するファイル名 |
# EUC-JP で作成された「test.txt」を、UTF-8に変換してファイルを「text_v2.txt」として保存
$ iconv -f eucjp -t utf8 test.txt > text_v2.txt
文字コードの詳細の話
ASCIIというコードが、7ビットの1バイト弱で表現されるシンプルな仕様。アメリカで標準化された規格であり、英語に使われる文字しか入っていない。つまり、漢字を使う日本やアルファベットにアクセント記号をつける欧州の言語には適さない。かつ漢字のように何千文字もあるような文字体系は、1バイトのコードではどうしても網羅することが不可能。
漢字に対応するためには、2バイトコードの開発が不可欠だった。1バイトでは256文字しか入らないが、2バイトであれば、65,536文字まで入る。ただ、2バイトコード開発には、プログラムのコンパイラやインタプリタなどは、相変わらずASCIIをベースとして動くわけなので、過去の資産との互換性も求められた。
そこで、1バイトコードと2バイトコードを組み合わせる技法が開発された。よく知られているShift_JISやEUCといったコードはそうしたものの一種。
文字コード | 方式 |
---|---|
Shift_JIS | 「日本の1バイトコードJIS×0201」と「2バイト漢字コードJIS×0208」とを組み合わせて運用する方式 |
EUC | 「ASCII」とJIS×0208を組み合わせて運用する方式 |
更に、情報通信技術が発達して国際的な活動が増えたことにより、国や地域別に作られていた文字コードをまとめて国際的な統一文字コードを作ろうということになった。
そこで開発された国際文字コードが「ISO/IEC 10646」、一般的には「Unicode」として知られる。Linuxのディストリビューションでもデフォルトの文字コードとして利用されている。
もっと深掘りしていく予定