Next: , Up: International   [Contents][Index]


22.1 国際化文字セットのイントロダクション

国際化文字セットとスクリプトのユーザーは、ファイルを保存するために、多少の差はありますが、標準化された多くのコーディングシステムを確立しています。これらのコーディングシステムは通常はマルチバイト(multibyte)で、これは1つの非ASCII文字を表すのに、2つ以上のバイトシーケンスを対応させることを意味します。

Emacsは、内部的にはUnicode標準のスーパーセットである、マルチバイト文字エンコーディングを使用します。この内部的なエンコーディングは、ほとんどすべての既知のスクリプトを、1つのバッファーまたは文字列に混成することを可能にします。Emacsはファイルを読み書きしたり、サブプロセスとデータをやりとりするとき、このマルチバイト文字エンコーディングと、他のさまざまなコーディングシステムをコード変換します。

コマンドC-h h (view-hello-file)は、ファイルetc/HELLOを表示します。これは、多くの異なる言語で、“hello”をどのように記述するかを、さまざまな文字で例示するファイルです。もしもある文字が端末で表示できないときは、それらの文字は‘?’か、中抜きのボックスで表示されます。

これらの文字セットを使う国のキーボードでも、一般的にはすべての文字に対応するキーはもっていません。キーボードがサポートしない文字は、C-q (quoted-insert)、またはC-x 8 RET (insert-char)を使って挿入することができます。Inserting Textを参照してください。Emacsはさまざまなインプットメソッド(IM: input methods)をサポートします。これはある字体の文字をタイプするのを簡単にするもので、通常1つの字体または言語に1つです。Input Methodsを参照してください。

プレフィクスキーC-x RETは、マルチバイト文字、コーディングシステム、インプットメソッドに属するコマンドにたいして使用されます。

コマンドC-x = (what-cursor-position)は、ポイント位置にある文字の情報を表示します。文字の位置に加えて、Position Infoで説明したように、このコマンドはその文字がどのようにエンコードされているかを表示します。たとえば、このコマンドは文字‘c’に大して、以下のような行をエコーエリアに表示します:

Char: c (99, #o143, #x63) point=28062 of 36168 (78%) column=53

Char:’の後ろの4つの値は、ポイント位置の文字を説明するためのもので、1つ目はその文字自身、その後ろに文字コードを10進(decimal)、8進(octal)、16進(hex)で表示します。非ASCIIのマルチバイト文字の場合、バッファーのコーディングシステムでその文字を安全に1バイトでエンコードできる場合は、‘file’とそのバッファーのコーディングシステムで表した文字コードの16進表記が続きます。その文字のエンコーディングが1バイトより長い場合、Emacsは‘file ...’と表示します。

特別なケースとして、文字コードが128(8進の0200)から159(8進の0237)の範囲の場合、それは“raw(生)”のバイトを表し、それに対応する表示可能な文字はありません。そのような“文字”はeight-bit-control文字セットに属し、エスケープされた8進表記で表示されます。このような場合、C-x =は‘file’のかわりに、‘part of display ...’と表示します。

プレフィクス引数を指定した(C-u C-x =)では、その文字の詳細な情報をウィンドウに表示します:

以下は例です(マニュアルに収まるように折り返している行もあります):

             position: 1 of 1 (0%), column: 0
            character: ê (displayed as ê) (codepoint 234, #o352, #xea)
    preferred charset: unicode (Unicode (ISO10646))
code point in charset: 0xEA
               script: latin
               syntax: w        which means: word
             category: .:Base, L:Left-to-right (strong), c:Chinese,
                       j:Japanese, l:Latin, v:Viet
             to input: type "C-x 8 RET HEX-CODEPOINT" or "C-x 8 RET NAME"
          buffer code: #xC3 #xAA
            file code: #xC3 #xAA (encoded by coding system utf-8-unix)
              display: by this font (glyph code)
    xft:-unknown-DejaVu Sans Mono-normal-normal-
        normal-*-15-*-*-*-m-0-iso10646-1 (#xAC)

Character code properties: customize what to show
  name: LATIN SMALL LETTER E WITH CIRCUMFLEX
  old-name: LATIN SMALL LETTER E CIRCUMFLEX
  general-category: Ll (Letter, Lowercase)
  decomposition: (101 770) ('e' '^')