次: , 前: Non-ASCII Characters, 上: Non-ASCII Characters


32.1 テキスト表現

Emacsには2つのテキスト表現、つまり、 文字列やバッファでテキストを表す方法が2つあります。 これらは、ユニバイト(unibyte)と マルチバイト(multibyte)と呼ばれます。 各文字列や各バッファでは、これらの2つの表現の一方を使います。 ほとんどの目的には、Emacsがこれらのあいだで適切に変換するので、 読者はこれらの表現に関しては無視できます。 Lispプログラムでは、これらの違いに注意する必要がしばしばあります。

ユニバイト表現では、各文字は1バイトを占め、 そのため、可能な文字コードの範囲は0から255です。 コード0から127はASCII文字です。 コード128から255は非ASCII文字集合の1つ (変数nonascii-insert-offsetに設定して文字集合を選べる) に使われます。

マルチバイト表現では、1文字は1バイト以上を占め、 そのため、Emacsの文字コードの範囲全体を格納できるのです。 マルチバイト文字の最初のバイトはつねに128から159(8進数で0200から0237)の 範囲にあります。 これらの値をリーディングコード(leading code)と呼びます。 マルチバイト文字の2バイト以降はつねに160から255(8進数で0240から0377)の 範囲にあります。 これらの値をトレイリングコード(trailing code)と呼びます。

バッファでは、変数enable-multibyte-charactersの バッファローカルな値が使用する表現を指定します。 文字列の表現は、文字列を作成するときの文字列の内容に基づいて決定されます。

— 変数: enable-multibyte-characters

この変数は、バッファのテキスト表現を指定する。 これがnil以外であると、バッファはマルチバイトテキストを保持する。 さもなければユニバイトテキストを保持する。

この変数に直接設定することはできない。 そのかわりに、バッファの表現を変更するには、 関数set-buffer-multibyteを使う。

— 変数: default-enable-multibyte-characters

この変数の値は、 (default-value 'enable-multibyte-characters)に完全に等価であり、 この変数に設定するとデフォルト値を変更する。 バッファのenable-multibyte-charactersのローカルな束縛に設定することは 許されていないが、デフォルト値を変更することは可能であり、 そうしても既存のバッファには影響しないので理にかなっている。

コマンド行オプション`--unibyte'は、 起動時の早い段階でデフォルト値にnilを設定することで役目を果たす。

— 機能: multibyte-string-p string

文字列stringにマルチバイト文字が含まれるとtを返す。