- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- ソース を表示
- 授業/C言語基礎/文字コードと改行コード へ行く。
- 1 (2015-09-24 (木) 10:09:18)
- 2 (2015-09-24 (木) 10:11:10)
- 3 (2015-09-24 (木) 16:26:54)
文字コード †
コンピューターの中では、すべてのデータが2進数、つまり0と1で表現されています。
文字を2進数で表す方法を文字コードといい、以下のようなものがあります。
- ASCII
- EUC
- JIS-2022-JP
- Shift-JIS
- Unicode (UTF-8)
日本語(ひらがな、カタカナ、漢字)を使う場合には、同じ文字でも、どの文字コードを使うかによって違う2進数データになります。 逆に、同じ2進数データでも、どの文字コードを使うかによって違う文字になります。
文字を2進数データに変換したときの文字コードと2進数データを文字に変換したときの文字コードが違うと、文字化けが生じます。
UnixやLinuxの日本語環境ではEUCが、WindowsやMac OSの日本語環境ではShift-JISが、日本語の電子メールではJIS-2022-JPが使われていました。
環境ごとに文字コードが違うのは不便なので、最近はどの環境でも共通してUnicode (UTF-8) を使うという流れになっています。
総合情報センターのLinuxサーバーではEUCが使われていますので、日本語を出力するプログラムを作成するときは、ファイルの文字コードをEUCにして保存しなければなりません。
改行コード †
改行を表す制御文字には、以下の二つがあります。
- CR: Carriage Return、行の頭に戻る
- LF: Line Feed、次の行に進める
テレックスという通信型のタイプライターのような装置を制御するための文字なので、行の頭に戻るという操作と、次の行に進めるという動作が別々にできるようになっています。
UnixやLinuxではLFのみ、WindowsではCRとLFの連続した二文字、以前のMac OSではCRのみが改行を表すのに使われていました。
現在は、Unix、Linux、Mac用のOS XではLFのみ、WindowsではCRとLFの連続した二文字が改行を表すのに使われています。
WindowsのファイルではCRとLFの連続した二文字が改行を表すのに使われますが、LinuxではLFだけで改行とみなされますので、Windows PCで作成したファイルを総合情報センターのLinuxで開くと、行末に制御文字が余分についているように見えることがあります。
多くの場合、これが原因で何か問題が生じるということはありませんが、Windows PCでファイルの改行コードをLFのみにして保存しておけば、Linuxで開いたときに行末に制御文字が余分につくことはありません。