ターミナルとエディタの設定について

前回, 設定について混乱があったので, ここでまとめておく. いまここで, 設定を下記のように変更してください. 以下は, 今回の設定の内容についての解説. 授業内容とは直接関係はないが, 知っておくと将来役に立つかもしれない.

日本語の文字コードについて

計算機内部では文字も2進数(整数値)として表されているのはご存知の通り. この文字と整数値の対応の規則を「文字コード体系」と呼ぶ.

ところが, やっかいなことに, 日本語の文字コード体系はひとつではないのである. まだ当分はこれらが統一されるとは考えにくいので, われわれはそれらとつき合っていく必要がある. 現在の日本で使われている, 日本語の文字コード体系は以下の4種である:

テキストファイルを作成するアプリケーション(たとえばテキストエディット, emacs)や, 表示するアプリケーション(たとえばターミナル)は, これらの複数のコード体系のうち, どれを使うかを決めておかないといけない. MacOS は, SJIS を標準のコードとしている.

ファイルに使われている文字コード系が, アプリケーションのコード系と一致していなかったとき, 何が起こるだろうか. ファイルのなかで特定の文字(たとえば「あ」)を表すコードは, 別のコード系においては全く違う文字を表すことになる. したがって, そのようなファイルを表示した場合, 意図とは全くことなる文字が並ぶことになる. これがいわゆる「文字化け」という現象で, 文字コード系の知識がないと解決のできない問題である.

単にテキストファイルを作成して表示するだけなら, ターミナルとエディタのコード系が一致していればそれでよい. しかし, 今回は, C言語のコンパイラ (cc コマンドで起動されるもの)という 第三の登場人物がいる. しかも, 面倒なことに, ccコマンド はプログラムの文字コードとして, EUC または UTF-8 を利用しなければならないのだ. たとえば以下のような謎のプログラムを, いろいろの文字コードで作成し, cc コマンドでコンパイルしてみると, JIS, SJIS の場合には妙なエラーが発生してしまう. (無理にやってみる必要はないが…)

#include <stdio.h> int main(){ printf("あ"); printf("ソ"); }

というわけで, この授業では, 利用する文字コード系を EUC とすることに 決めた.

行末コードについて

テキストファイルは通常, 「行」を単位として作る. 各行の末尾には「行末」を表す文字が入っている. 文字コード表では, 「行末」に相当しそうな文字としては, 以下のふたつがある. ところが, 面倒なことに, このどちらを使うかが 計算機システムによって異なるのである. 実際にはこんな感じ: ファイルの行末文字と, それを表示するたとえばターミナルの行末文字が 異なっていると, 行がうまく表示されなくなるわけだ. たとえば, ターミナルは「改行」を期待しているのに, ファイルには「復帰」だけが 入っていると, ターミナルは行替えをまったくしないで表示してしまう. つまり, ファイル全体が一行に表示されて, しかもそのあとで シェルプロンプトが上書きの形で表示されるから, 見掛け上は「全く何も表示されない」という結果になってしまうのだった.

この授業では, 「行末」としては改行を使うという, Unix風の設定をとることにした.


[page 2] prev index next