For Gauche 0.9.5


Next: , Previous: , Up: 主要な概念   [Contents][Index]

2.3 マルチバイトスクリプト

リテラル文字列や文字以外にも、コメント、シンボル名、 リテラル正規表現など様々な箇所で、us-ascii以外の文字を 使うことができます。

デフォルトでは、GaucheはSchemeプログラムをGaucheの内部文字エンコーディングで 書かれているものとして扱います。これは、自分で書いたスクリプトを自分の 環境で走らせるだけなら十分ですが、別の文字エンコーディングを使うように コンパイルされた環境でスクリプトを走らせたい場合に問題となります。

そこで、Gaucheは、次のようなコメントがプログラムソースコードの 2行目までに現れた場合、ソースコードの残りの部分が<encoding-name>で 指定されるエンコーディングで書かれているものとして、必要ならば 適切なエンコーディング変換を行います。

;; coding: <encoding-name>

より正確には、1行目または2行目のコメントで、 正規表現#/coding[:=]\s*([\w.-]+)/にマッチするものがあった場合に、 最初の部分マッチがエンコーディング名として認識されます。 複数のマッチがあった場合は最初のものが有効になります。 このメカニズムを利用するためには、最初の2行以内にus-ascii以外の文字を 含めないようにして下さい。

例えば次の例では、Gaucheはスクリプトがeuc-jpで書かれているものと 認識します。coding指定の周囲の"-*-"は、Emacsが バッファのエンコーディングを適切に設定するのに使われます。

#!/usr/bin/gosh
;; -*- coding: euc-jp -*-

... script written in euc-jp ...

内部では、この特殊なコメントの処理は特別なポートによって 行われています。詳細はコーディング認識ポートを参照して下さい。 また、この処理を行わないようにする方法については Schemeファイルのロードを参照して下さい。


Next: , Previous: , Up: 主要な概念   [Contents][Index]