リテラル文字列や文字以外にも、コメント、シンボル名、
リテラル正規表現など様々な箇所で、us-ascii
以外の文字を
使うことができます。
デフォルトでは、GaucheはSchemeプログラムをutf-8で書かれているものとして扱います。 もし何らかの事情でutf-8以外のエンコーディングでソースを書かなければならない場合、 コードの先頭付近に次のような特殊なコメントを置いておくことができます。
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ファイルのロードを参照して下さい。