次: , 前: Coding Systems, 上: Coding Systems


32.10.1 コーディングシステムの基本概念

文字コード変換(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-unixlatin-1-doslatin-1-macのような 変種コーディングシステム(variant coding system)では、 明示的に行末変換も指定します。 ほとんどの基底コーディングシステムには、 `-unix'、`-dos'、`-mac'を付加して作られる名前の 対応する3つの変種があります。

コーディングシステムraw-textは 文字コード変換を行わない特別なもので、 このコーディングシステムで訪問したバッファはユニバイトバッファになります。 行末変換も指定しないので内容に基づいて決定でき、 行末変換を指定する3つの変種もあります。 no-conversionraw-text-unixに等価であり、 文字コードも行末も変換しないことを指定します。

コーディングシステムemacs-muleは、 Emacs内部での符号でデータを表現することを指定します。 これは、コード変換を行わないという意味ではraw-textに似ていますが、 結果がマルチバイトデータになる点が異なります。

— 機能: coding-system-get coding-system property

この関数は、コーディングシステム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の値は、 コーディングシステムの別名としても定義されている。