GNU Emacs 32.0.50 (9008bf64c3) のマニュアルを PLaMo 翻訳で機械翻訳したものです。誤訳を含むことがあります。原文: https://www.gnu.org/software/emacs/manual/html_node/elisp/Selecting-a-Representation.html ・ emacs-doc.conao3.com

34.4 表現の選択

既存のバッファや文字列を、ユニバイトであったものをマルチバイトとして、あるいはその逆に解析することが有用な場合があります。

関数: set-buffer-multibyte multibyte

現在のバッファの表現型を設定します。multibyte が nil 以外の場合、バッファはマルチバイトになります。multibyte が nil の場合、バッファはユニバイトになります。

この関数は、バッファの内容をバイト列として見た場合には変更しません。その結果、文字として見た場合の内容が変更されることがあります。例えば、マルチバイト表現では1文字として扱われる3バイトのシーケンスは、ユニバイト表現では3文字としてカウントされます。生のバイトを表す8ビット文字は例外です。これらはユニバイトバッファでは1バイトで表現されますが、バッファがマルチバイトに設定されると2バイトのシーケンスに変換され、その逆も同様です。

この関数は、どの表現が使用されているかを記録するために enable-multibyte-characters を設定します。また、バッファ内の各種データ(オーバーレイ、テキストプロパティ、マーカーなど)を調整し、以前と同じテキストをカバーするようにします。

この関数は、バッファが狭められた場合にエラーを通知します。これは、マルチバイト文字シーケンスの途中で狭めが行われた可能性があるためです。

この関数は、バッファが間接バッファである場合にもエラーを通知します。間接バッファは常に、基となるバッファの表現を継承します。

以下の2つの関数は廃止されており、今後のEmacsのバージョンで削除される予定です。代わりにencode-coding-stringを使用してください。

関数: string-as-unibyte string

string が既にユニバイト文字列である場合、この関数は string 自体を返します。そうでない場合は、string と同じバイト列を持ちつつ、各バイトを個別の文字として扱う新しい文字列を返します(そのため、値に含まれる文字数が string より多くなる場合があります)。例外として、生のバイトを表す各8ビット文字は単一のバイトに変換されます。新しく作成された文字列にはテキストプロパティは含まれません。

関数: string-as-multibyte string

string がマルチバイト文字列の場合、この関数は string 自体を返します。それ以外の場合は、string と同じバイト列を持ちつつ、各マルチバイトシーケンスを1文字として扱う新しい文字列を返します。つまり、その値は string よりも文字数が少なくなる可能性があります。string 内のバイトシーケンスが、単一文字のマルチバイト表現として無効な場合、そのシーケンス内の各バイトは生の8ビットバイトとして扱われます。新しく作成された文字列にはテキストプロパティは含まれません。