ターミナルとエディタの設定について
前回, 設定について混乱があったので, ここでまとめておく.
いまここで, 設定を下記のように変更してください.
- ターミナルの設定
- エディタの設定 - これは自分が使っているものについて設定してください.
以下は, 今回の設定の内容についての解説. 授業内容とは直接関係はないが,
知っておくと将来役に立つかもしれない.
日本語の文字コードについて
計算機内部では文字も2進数(整数値)として表されているのはご存知の通り.
この文字と整数値の対応の規則を「文字コード体系」と呼ぶ.
ところが, やっかいなことに, 日本語の文字コード体系はひとつではないのである.
まだ当分はこれらが統一されるとは考えにくいので,
われわれはそれらとつき合っていく必要がある.
現在の日本で使われている, 日本語の文字コード体系は以下の4種である:
- JIS
- MS漢字
マイクロソフト社が定めたコード体系. Shift JIS とか SJIS ともいう. Windows や MacOS が標準で使っているのはこれ.
- EUC
おもに Unix 系で使われている.
- UTF-8
ユニコードともいう. もっとも新しく制定されたコード体系. 全世界の文字をひとつのコード体系で表現しようという
趣旨で, 次第に使われ始めている.
テキストファイルを作成するアプリケーション(たとえばテキストエディット, emacs)や,
表示するアプリケーション(たとえばターミナル)は,
これらの複数のコード体系のうち, どれを使うかを決めておかないといけない.
MacOS は, SJIS を標準のコードとしている.
ファイルに使われている文字コード系が, アプリケーションのコード系と一致していなかったとき,
何が起こるだろうか.
ファイルのなかで特定の文字(たとえば「あ」)を表すコードは, 別のコード系においては全く違う文字を表すことになる.
したがって, そのようなファイルを表示した場合, 意図とは全くことなる文字が並ぶことになる.
これがいわゆる「文字化け」という現象で,
文字コード系の知識がないと解決のできない問題である.
単にテキストファイルを作成して表示するだけなら,
ターミナルとエディタのコード系が一致していればそれでよい.
しかし, 今回は, C言語のコンパイラ (cc コマンドで起動されるもの)という
第三の登場人物がいる.
しかも, 面倒なことに, ccコマンド はプログラムの文字コードとして,
EUC または UTF-8 を利用しなければならないのだ.
たとえば以下のような謎のプログラムを, いろいろの文字コードで作成し,
cc コマンドでコンパイルしてみると, JIS, SJIS の場合には妙なエラーが発生してしまう. (無理にやってみる必要はないが…)
#include <stdio.h>
int main(){
printf("あ");
printf("ソ");
}
というわけで, この授業では, 利用する文字コード系を EUC とすることに
決めた.
行末コードについて
テキストファイルは通常, 「行」を単位として作る.
各行の末尾には「行末」を表す文字が入っている.
文字コード表では, 「行末」に相当しそうな文字としては, 以下のふたつがある.
- 復帰 (Carriage Return, CRともいう. 文字コードは 13)
- 改行 (Line Feed, LFともいう. 文字コードは 10)
ところが, 面倒なことに, このどちらを使うかが
計算機システムによって異なるのである.
実際にはこんな感じ:
- MacOS - 復帰
- Unix - 改行
- Microsoft Windows - 復帰, 改行 を続けて書く
ファイルの行末文字と, それを表示するたとえばターミナルの行末文字が
異なっていると, 行がうまく表示されなくなるわけだ.
たとえば, ターミナルは「改行」を期待しているのに, ファイルには「復帰」だけが
入っていると, ターミナルは行替えをまったくしないで表示してしまう.
つまり, ファイル全体が一行に表示されて, しかもそのあとで
シェルプロンプトが上書きの形で表示されるから,
見掛け上は「全く何も表示されない」という結果になってしまうのだった.
この授業では, 「行末」としては改行を使うという, Unix風の設定をとることにした.
[page 2]
prev
index
next