コーディングシステムを扱うためのLispの機能は以下の通りです。
この関数は、すべてのコーディングシステム名(シンボル)の一覧を返します。base-only が nil
以外の場合、値には基本コーディングシステムのみが含まれます。それ以外の場合は、エイリアスおよびバリアントのコーディングシステムも含まれます。
この関数は、object がコーディングシステム名または nil である場合に t を返します。
この関数は coding-system の妥当性をチェックします。妥当な場合は coding-system を返します。coding-system が
nil である場合、関数は nil
を返します。それ以外の値については、error-symbol が coding-system-error となるエラーを通知します(シグナル を参照)。
この関数は、coding-system で使用される行末(別名 eol)変換の型を返します。coding-system
で特定の行末変換が指定されている場合、戻り値は unix、dos、mac をそれぞれ表す整数 0、1、または 2
となります。coding-system
で行末変換が明示的に指定されていない場合、戻り値は以下のような、考えられる行末変換型のいずれかをそれぞれ持つコーディングシステムのベクトルとなります:
(coding-system-eol-type 'latin-1)
⇒ [latin-1-unix latin-1-dos latin-1-mac]
この関数がベクトルを返す場合、Emacsはテキストのエンコードまたはデコード処理の一環として、どのEOL変換を使用するかを決定します。デコード時には、テキストの行末形式が自動的に検出され、それに合わせてEOL変換が設定されます(例:DOS形式のCRLFであればdosのEOL変換が適用されます)。エンコード時には、適切なデフォルトのコーディングシステム(例:buffer-file-coding-systemに対するデフォルト値buffer-file-coding-system)、または基盤となるプラットフォームに適したデフォルトのEOL変換が採用されます。
この関数は、eol-type で指定される行末変換を除き、coding-system と同様のコーディングシステムを返します。eol-type は unix、dos、mac、または nil である必要があります。nil
の場合、返されるコーディングシステムがデータから行末変換を決定します。
eol-type は 0、1、または 2 の場合もあり、それぞれ unix、dos、mac を表します。
この関数は、eol-coding の行末変換と text-coding のテキスト変換を用いるコーディングシステムを返します。text-coding が nil である場合は、undecided または eol-coding
に応じたそのバリアントのいずれかを返します。
この関数は、from から to までのテキストのエンコードに使用可能なコーディングシステムの一覧を返します。一覧に含まれるすべてのコーディングシステムは、その部分のテキストに含まれるあらゆるマルチバイト文字を安全にエンコードできます。
テキストにマルチバイト文字が含まれていない場合、関数はリスト (undecided) を返します。
この関数は、string
のテキストをエンコードするために使用可能なコーディングシステムの一覧を返します。一覧に含まれるすべてのコーディングシステムは、string
内のあらゆるマルチバイト文字を安全にエンコードできます。テキストにマルチバイト文字が含まれていない場合は、一覧 (undecided) が返されます。
この関数は、リスト charsets に含まれるすべての文字セットをエンコードするために使用可能な符号化方式の一覧を返します。
この関数は、リスト coding-system-list に含まれる符号化方式が、start と end
の間の領域にあるすべての文字を符号化できるかどうかを判定します。リスト内のすべての符号化方式が指定されたテキストを符号化できる場合、この関数は
nil
を返します。一部の符号化方式が一部の文字を符号化できない場合、戻り値はアリストであり、各要素は (coding-system1 pos1 pos2 …) の形式をとります。これは、coding-system1 がバッファ位置 pos1、pos2、...
にある文字を符号化できないことを意味します。
start は文字列である場合があり、その場合は end は無視され、返される値はバッファ位置ではなく文字列のインデックスを参照します。
この関数は、startからendまでのテキストをデコードするための妥当な符号化方式を選択します。このテキストはバイト列、すなわちユニバイトテキスト、またはASCIIと8ビット文字のみからなるマルチバイトテキストである必要があります(明示的な符号化とデコードを参照)。
通常、この関数はスキャンされたテキストのデコードを処理可能なコーディングシステムの一覧を返します。これらは優先度の高い順に列挙されます。ただし、highest が nil
以外である場合、戻り値は優先度が最も高い単一のコーディングシステムのみとなります。
当該領域に、ESC のような ISO-2022 制御文字を除く ASCII 文字のみが含まれている場合、テキストから判断可能であれば、値は undecided または (undecided)、あるいは行末変換を指定するバリアントとなります。
リージョンにヌルバイトが含まれている場合、たとえそのリージョンに何らかの符号化方式でエンコードされたテキストが含まれていても、値は no-conversion となります。
この関数は detect-coding-region と同様ですが、バッファ内のバイトではなく
string の内容に対して動作します。
この変数が nil
以外の値を持つ場合、領域や文字列のエンコーディングを検出する際にヌルバイトが無視されます。これにより、Indexノードを持つInfoファイルなど、ヌルバイトを含むテキストのエンコーディングを正しく検出できるようになります。
この変数に nil 以外の値が設定されている場合、領域や文字列のエンコーディングを検出する際に
ISO-2022 エスケープシーケンスが無視されます。その結果、いかなるテキストも ISO-2022
エンコーディングで符号化されていると検出されず、すべてのエスケープシーケンスがバッファ内で可視となります。警告: Emacs ディストリビューションに含まれる多くのファイルが
ISO-2022 エンコーディングを使用しているため、この変数の使用には細心の注意を払ってください。
この関数は、coding-system がサポートする文字セット(文字セットを参照)の一覧を返します。一覧にしきれないほど多くの文字セットをサポートする一部の符号化方式では、特別な値が返されます:
(emacs) となります。
(unicode) となります。
iso-2022 となります。
emacs-mule となります。
サブプロセスへの入出力に使用されるコーディングシステムの確認方法や設定方法については、プロセス情報、特に関数
process-coding-system および set-process-coding-system の説明を参照してください。