文字コード変換(character code conversion)とは、 Emacsの内部で使用する符号と他の符号とのあいだでの変換のことです。 Emacsでは、相互に変換できる多くの異なる符号を扱えます。 たとえば、Emacsは、Latin 1、Latin 2、Latin 3、Latin 4、Latin 5、 ISO 2022のいくつかの変種を相互に変換できます。 同じ文字集合に対する異なる符号を扱うこともできます。 たとえば、キリル(ロシア語)文字に対しては ISO、Alternativnyj、KOI8の3つのコーディングシステムがあります。
ほとんどのコーディングシステムでは変換する文字コードを特定しますが、 指定せずにデータに基づいて発見的手法で選ぶものもあります。
行末変換(end of line conversion)は、 ファイル内の行の終りを表すさまざまなシステムで 使われている3つの異なる慣習を扱います。 UNIXの慣習では、行送り文字(改行文字とも呼ぶ)を使います。 DOSの慣習では、行末には復帰と行送りの2文字の列を使います。 Macの慣習では、復帰のみを使います。
latin-1
のような基底コーディングシステム(base coding system)
では、行末変換を指定せずにデータに基づいて選びます。
latin-1-unix
、latin-1-dos
、latin-1-mac
のような
変種コーディングシステム(variant coding system)では、
明示的に行末変換も指定します。
ほとんどの基底コーディングシステムには、
‘-unix’、‘-dos’、‘-mac’を付加して作られる名前の
対応する3つの変種があります。
コーディングシステムraw-text
は
文字コード変換を行わない特別なもので、
このコーディングシステムで訪問したバッファはユニバイトバッファになります。
行末変換も指定しないので内容に基づいて決定でき、
行末変換を指定する3つの変種もあります。
no-conversion
はraw-text-unix
に等価であり、
文字コードも行末も変換しないことを指定します。
コーディングシステムemacs-mule
は、
Emacs内部での符号でデータを表現することを指定します。
これは、コード変換を行わないという意味ではraw-text
に似ていますが、
結果がマルチバイトデータになる点が異なります。
この関数は、コーディングシステムcoding-systemの指定した属性を返す。 コーディングシステムのほとんどの属性は内部目的用であるが、 読者が有用と思うものが1つ、
mime-charset
がある。 この属性の値は、当該コーディングシステムで読み書きする 文字コード向けのMIMEに使用する名前である。(coding-system-get 'iso-latin-1 'mime-charset) ⇒ iso-8859-1 (coding-system-get 'iso-2022-cn 'mime-charset) ⇒ iso-2022-cn (coding-system-get 'cyrillic-koi8 'mime-charset) ⇒ koi8-r属性
mime-charset
の値は、 コーディングシステムの別名としても定義されている。