[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

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

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

いまのところ、Gaucheはus-ascii以外の文字を全て、シンボルを 構成する文字として扱います。但し、Unicodeは十数個の「空白」文字を定義 しており、将来はそれらの文字がプログラム上も空白として扱われるように なるでしょう。従って現在のところはそれらの文字の使用は (文字列、正規表現、文字以外の箇所では)避けておくのが良いでしょう。

デフォルトでは、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ファイルのロードを参照して下さい。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]

This document was generated by Shiro Kawai on November, 22 2009 using texi2html 1.78.