GAMS における文字コード

[注]以下の話は MS Windows で GAMS を利用する際の話です。Windows上でしか動かないgdxxrw.exeというプログラムに関連する話ですので。

昔の Windows 上の GAMS は日本語を含むプログラムのファイルの文字コードとして Shift JIS しか扱えませんでしたが、現在の GAMS は UTF-8 も扱えます。GAMS Studio を使っているのでしたら、メニューの「Edit」→「Encodings」のところから利用する文字コードを選択できます(UTF-8 か Shift JISなど)。

私自身は Shift JIS では困るという場合はほとんどありませんが、やはり Shift JIS ですと表現できる文字の種類にかなり制限が加わりますので、UTF-8 を使うようになりました。

ただし、UTF-8 にすると一つ困ることがあります。GAMS自体は UTF-8 でも Shift JIS でもどちらでも扱えるのですが、GAMS でデータを扱う際によく利用する GDXXRW(gdxxrw.exe)というプログラムでは文字コードの制限があるようです。

GAMS で作業をする際に、Excelのデータを読み込んだり、計算結果を Excel に出力したりすることがよくあります。ただ、GAMS は直接 Excel ファイルを読み書きできません。そこで、以下のように、GAMS が直接読み書きできる GDX ファイルという形式のファイルを間にはさんで Excel とやりとりします。

  • Excelファイル → GDX ファイル → GDX ファイルを GAMS で読み込み
  • GAMS から GDX ファイルにデータを出力 → GDX ファイル → Excelファイル

このときの「Excelファイル → GDXファイル」という変換、「GDXファイル → Excelファイル」という変換をおこなうのが GDXXRW というプログラムです。

上で書いたように GAMS 自体は文字コードを選べますが、この GDXXRW というプログラムは Windows のシステムの既定の文字コードしか扱えないようです。Windows においてシステムロケールで日本語を選ぶと文字コードの既定値は Shift JIS になるようです。このため、Windows 上の GDXXRW は Shift JIS の文字コードしか扱えないようです。

ですので、UTF-8 を使ったプログラムファイルを GAMS で実行し、その結果を GDXXRW を用いて Excel に出力すると日本語部分が文字化けするということが起ります。

文字化けするのは set、parameter などの説明文などに日本語を使っている部分です。説明文などに普通のアルファベットしか使わないのなら、文字コードがなんだろうと文字化けしないです。ですので、そもそも説明文に日本語を使わないという対処方法もあります。ただ、説明文に日本語を使えればやはり便利なので、日本語を使うという前提でこの問題への対処する方法には、次の二つがあるようです。

  • 1) 昔からのように GAMS では Shift JIS しか使わないようにする。
  • 2) GAMS で UTF-8 を使うようにし、同時にシステム自体を UTF-8 を使うように変更。

まあ、どうしても GAMS で UTF-8 を使わないといけないという人は少ないと思いますので、普通の人は 1 にすればよいと思います。

2 のシステムの文字コードUTF-8 に変更する方法は、例えば以下のページに書いてあります。

システムロケールUnicode UTF-8に変更する方法・言語設定 | Howpon[ハウポン] https://howpon.com/247

ただし、このようにWindowsのシステムの文字コードUTF-8にするのはベータ版の機能で、こう変更することによりいろいろ問題が生じる可能性もあるようなので注意してください。例えば、メニューが文字化けしたり、上手く動かなくなるソフトがあります(要するにUTF-8に対応していないソフトがまだ残っているということだと思いますが)。私のPCではATOK 2017のメニューが文字化けするだけではなく、ATOK 2017で文字を入力しているときに頻繁にソフトが落ちるようになりました。

一番いいのは、GDXXRW が複数の文字コードを使いわけできるようになってくれることですが、すぐには対応できないようです(いずれ対応してくれると思いますが)。