デフォルトでは、Emacsはマルチバイトモードで起動します。バッファや文字列の内容は、非ASCII文字をマルチバイトシーケンスで表現する内部エンコーディングを用いて格納されます。マルチバイトモードを利用すれば、サポートされているすべての言語やスクリプトを制限なく使用できます。
極めて特殊な状況下では、特定のバッファに対してマルチバイト文字サポートを無効にしたい場合があります。バッファでマルチバイト文字が無効になっている状態を、ユニバイトモードと呼びます。ユニバイトモードでは、バッファ内の各文字は0から255(8進数で0377)までの文字コードを持ちます。0から127(8進数で0177)はASCII文字を、128(8進数で0200)から255(8進数で0377)は非ASCII文字を表します。
特定のファイルをユニバイト形式で編集するには、find-file-literally
を使用してそのファイルにアクセスします。ファイルアクセス用関数を参照してください。マルチバイトバッファをファイルに保存し、バッファを破棄した後、再度
find-file-literally
でファイルにアクセスすることで、マルチバイトバッファをユニバイトに変換できます。あるいは、C-x RET c (universal-coding-system-argument)
を使用し、ファイルのアクセスまたは保存に使用するコーディングシステムとして ‘raw-text’ を指定することもできます。GNU
Emacs Manual の ファイルテキストのコーディングシステムの指定を参照してください。find-file-literally とは異なり、‘raw-text’
でファイルを探しても、フォーマット変換、展開、または自動モード選択は無効になりません。
バッファローカル変数 enable-multibyte-characters
は、マルチバイトバッファでは non-nil となり、ユニバイトバッファでは nil
となります。モードラインでも、バッファがマルチバイトであるかどうかが示されます。グラフィカルディスプレイの場合、マルチバイトバッファでは、文字セットを示すモードラインの部分にツールチップが表示され、(その他の情報とともに)そのバッファがマルチバイトであることが示されます。ユニバイトバッファでは、文字セットのインジケーターは表示されません。したがって、ユニバイトバッファでは(グラフィカルディスプレイを使用している場合)、入力メソッドを使用していない限り、通常、参照先ファイルの改行規約(コロン、バックスラッシュなど)の表示より前には何も表示されません。
特定のバッファ内で toggle-enable-multibyte-characters
コマンドを実行することで、そのバッファのマルチバイトサポートを無効にできます。