Emacsでは、ユニバイトテキストをマルチバイトに変換できるほか、マルチバイトテキストがASCIIと8ビットの生バイトのみで構成されている場合に限り、マルチバイトテキストをユニバイトに変換することも可能です。一般的に、これらの変換はバッファにテキストを挿入する際や、複数の文字列からテキストを一つの文字列にまとめる際に行われます。また、文字列の内容をいずれかの形式に明示的に変換することもできます。
Emacsは、文字列の表現を、それが構成されるテキストに基づいて選択します。一般的なルールとして、他のマルチバイトテキストと結合する際には、ユニバイトテキストをマルチバイトテキストに変換します。これは、マルチバイト表現の方がより汎用的であり、ユニバイトテキストに含まれるあらゆる文字を格納できるためです。
バッファにテキストを挿入する際、Emacsはそのバッファのenable-multibyte-charactersで指定された表現形式にテキストを変換します。特に、ユニバイトバッファにマルチバイトテキストを挿入する場合、Emacsはそのテキストをユニバイトに変換しますが、この変換では一般に、マルチバイトテキストに含まれ得るすべての文字を保持できるとは限りません。もう一つの自然な選択肢であるバッファ内容をマルチバイトに変換する方法は、バッファの表現形式がユーザーによる選択であり、自動的に上書きすることができないため、採用できません。
ユニバイトテキストをマルチバイトテキストに変換すると、ASCII文字はそのまま保持され、コード128から255までのバイトは、生の8ビットバイトのマルチバイト表現に変換されます。
マルチバイトテキストをユニバイトに変換すると、すべてのASCII文字および8ビット文字がシングルバイト形式に変換されますが、各文字のコードポイントのうち下位8ビット以外をすべて破棄するため、ASCII以外の文字に関する情報が失われます。ユニバイトテキストをマルチバイトに変換し、再びユニバイトに戻すと、元のユニバイトテキストが再現されます。
続く2つの関数は、引数 string を返すか、あるいはテキストプロパティを持たない新規作成の文字列を返します。
この関数は、string と同じ文字シーケンスを含むマルチバイト文字列を返します。string がマルチバイト文字列である場合は、そのまま返されます。この関数は、string に ASCII 文字と生の 8
ビットバイトのみが含まれていることを前提としています。後者は、コードポイント #x3FFF80 から
#x3FFFFF まで(両端を含む)に対応するマルチバイト表現に変換されます(コードポイント を参照)。
この関数は、string と同じ文字シーケンスを含むユニバイト文字列を返します。string がユニバイト文字列である場合は、そのまま返されます。それ以外の場合は、ASCII 文字および eight-bit
文字セットの文字が、対応するバイト値に変換されます。string の引数に ASCII 文字と 8
ビット文字のみが含まれている場合にこの関数を使用してください。それ以外の文字が検出された場合、関数はエラーを通知します。
この関数は、1バイトの文字データ byte を含むユニバイト文字列を返します。byte が 0 から 255 までの整数でない場合は、エラーを通知します。
これは、マルチバイト文字 char をユニバイト文字に変換し、その文字を返します。char が ASCII でも8ビットでもない場合、この関数は −1 を返します。
これは、char が ASCII または生の 8 ビットバイトであると想定して、ユニバイト文字 char をマルチバイト文字に変換します。