文字符号化 | 文字符号変換 | 改行文字コード

文字符号化と改行コード

文字符号化

ページの先頭へ

コンピュータで文字を正しく表示するためには、まず利用可能な文字集合(character set)を定め、さらに各文字を数字列に対応させる文字符号化(文字コード化 character coding)を定めておく必要がある。 今日では文字コードとしてUTF-8を使おう。

もっとも代表的な文字符号化に、大小のローマ文字や数字、英文でよく使われる約物など(不可視制御文字を含む)128文字の集合をさだめ、これに7bitの整数を割り当てた文字コードであるASCII(American standard code for information interchange)がある。 ASCIIでは、たとえば "A" は 16進数で 0x41(10進数で 65)に割り当てられている。 日本文字集合としてJIS X 0208、その文字符号化にはISO-2022-JPEUC-JPShift_JISの複数の2バイト(16ビット)文字符号化があり、問題を複雑にしている。

しかし、JIS X 0208では、6,879文字を含むのであるが、一部の言語を除いて同時に複数の言語文字を表示することができない(しかもα, β,γなどのギリシャ語やД,Ш,Яなどのロシア文字は全角である)。 つまり、文字集合が小さいのである。 欧米の文字集合の多くは8ビット符号化で十分であるが、日本語を含めてアジア言語では漢字などが示すように膨大な文字が利用されてる。 こうした問題に部分的にせよ対応するために、大きな文字集合を定義し、その文字を1〜6バイトでの文字符号化を定めたのがUTF-8(UCS Transformation Format 8)文字符号化である。 最近のOSでは、国際化対応のためもあり内部の文字処理をUTF-8で行うようになっている(WindowsでもMacOSでも)。 たとえば、Microsoft Officeのファイルは「内部では」UTF-8文字符号化で作成されている。 Webページなどと親和性の高い電子ブックの書式EPUBがUTF-8を指定しているなど、急速にUTF-8の文字符号化が広がっている。

テキストエディタは複数の文字符号化(文字コード)を自動判定して、文字化けを起こさずに表示してくれるものを使おう(Windowsに付属の「メモ帳」も多少は改善されてきたが、エディタとして利用するには全く不十分で利用は薦めない)。 そのようなエディタでは、テキストファイルの文字コードを他の文字コードに変換して保存することができる。

sakura_utf.png

左図は、サクラエディタで開いたテキストが UTF-8 文字コードを使っていることを示している(ウィンドウ下段に「UTF-8」の表示がある)。

文字符号変換

ページの先頭へ

テキストファイルの文字符号化方式を別の文字符号化に変換して保存することは、あらゆる意味できわめて大切な作業だ。

MacOSのエディタ mi では、このように、文字コード指定のメニューアイコンから目的の文字符号化を選択(下図右)してから、保存する。

Windowsのエディタ サクラエディタ では、下図左(クリックして拡大)のように、[ファイル]/[開き直す]から目的の文字符号化を選択してから保存する。

sakura_code-transf mi_code-transf
terapad charset-break-trans Windowsのエディタ TeraPadでは[ファイル]/[文字/改行コード指定保存]から、文字コードおよび改行コードを変換できる。

ページの先頭へ

改行文字コード

ページの先頭へ

「改行文字」という不可視文字をどのように符号化(コード化)して実現・表現するかという改行コードは、特にプログラム言語(Perl、Python、Rubyなどのスクリプト言語)では大きな問題になることがある(LFにするのが一般的だ)。 テキストエディタは、改行コードを自動判定し正常に改行表示できるものを使う必要がある(たとえば、Windowsに標準装備され [プログラム]/[アクセサリ] にある「メモ帳」はWindows標準の改行コードしか認識できず、しかも折り返し機能がないために、ファイル内容が1行としてWindows幅からはみ出してしまう)。

typewriter_corona

OSによって標準で使われる改行コードは違う。 以下、CRは「キャリッジ・リターン」(\r)で復帰、LFは「ライン・フィード」(\n)で改行という不可視コードである(括弧内はその正規表現)。 これらは、既に使われなくなって久しいタイプライターで使われていた用語である。

OS 改行コード 正規表現
Windows CR+LF \r\n
MacOS CR \r
Unix LF \n

改行コードは、HTMLファイルLaTeXファイル(これらはどの改行コードを使っても整形表示やタイプセットには影響を与えない)などのテキストファイルと同じ改行コードを採用するようにしよう。

mi_default_mode

MacOS用のエディタ mi では、デスクトップメニュー [mi]/[モード設定..]から、それぞれのモード(標準、HTMLなど自由に追加できる)において[デフォルト]を選択し「改行コード」から、または下図のように、エディタメニュウのアイコンから、CR(Mac) / CR+LF(Windows) / LF(UNIX)のどれかを選ぶ。

mi_newline_code_icon sakura_line_wrap

Windows用のエディタ サクラエディタ では[設定]/[入力改行コード]で、Windows CRLF / Mac CR / Unix LFのどれかを選ぶ。

invisible char Windowsのエディタ TeraPadでは、[オプション]/[文字コード]から初期改行コードを選択できる。 図では、文字符号化をUTF-8、改行コードをWindows標準のCR+LFとしている。