Emacsの文字列における非ASCII文字のテキスト表現には、マルチバイトとユニバイトの2種類があります(テキスト表現を参照)。大まかに言えば、ユニバイト文字列は生のバイトを格納し、マルチバイト文字列は人間が読めるテキストを格納します。ユニバイト文字列の各文字は1バイトであり、つまりその値は0から255の範囲です。これに対し、マルチバイト文字列の各文字は0から4194303までの値を持つことがあります(文字型を参照)。いずれの場合も、127を超える文字は非ASCII文字となります。
文字列定数に非ASCII文字を含めるには、その文字をそのまま記述します。文字列定数が、マルチバイトバッファや文字列、あるいはマルチバイトとしてアクセスされるファイルなどのマルチバイトソースから読み込まれる場合、Emacsは各非ASCII文字をマルチバイト文字として読み取り、自動的にその文字列をマルチバイト文字列にします。文字列定数がユニバイトソースから読み込まれる場合、Emacsは非ASCII文字をユニバイトとして読み取り、文字列をユニバイトにします。
マルチバイト文字列に文字をリテラルとして書き込む代わりに、エスケープシーケンスを用いてその文字コードとして書き込むことができます。エスケープシーケンスの詳細については、一般的なエスケープ構文を参照してください。
文字列定数内でUnicode形式のエスケープシーケンス ‘\uNNNN’ や ‘\U00NNNNNN’ を使用すると(ASCII 文字であっても)、Emacsは自動的にそれがマルチバイトであると判断します。
文字列定数では、16進エスケープシーケンス (‘\xn’) や8進エスケープシーケンス (‘\n’) も使用できます。 ただしご注意ください: 文字列定数に8進エスケープシーケンスや1桁または2桁の16進エスケープシーケンスが含まれており、かつこれらのエスケープシーケンスがすべてユニバイト文字(すなわちコードポイントが256未満の文字)を指定していて、さらに文字列内にそれ以外の非ASCIIリテラル文字やUnicode形式のエスケープシーケンスが存在しない場合、Emacsは自動的にそれをユニバイト文字列であるとみなします。 つまり、文字列中に現れるすべての非ASCII文字が8ビットの生バイトであると判断するということです。
16進数および8進数のエスケープシーケンスでは、エスケープされる文字コードに可変個の数字が含まれる可能性があるため、その後に続く文字のうち、有効な16進数または8進数の数字ではない最初の文字がエスケープシーケンスを終了させます。文字列内の次の文字が16進数または8進数の数字として解釈され得る場合は、エスケープシーケンスを終了させるために ‘\ ’(バックスラッシュとスペース)を記述してください。例えば、‘\xe0\ ’ は1文字を、‘a’ はグレイヴアクセント付きの文字を表します。文字列定数内の ‘\ ’ はバックスラッシュ・改行と同様であり、文字列に文字を追加することはありませんが、直前の16進数エスケープを終了させます。