[1751] Re:DIKSAM_book_0_4のLinuxでの実行結果について (その2)
投稿者:(ぱ)こと管理人
2011/11/27 23:10:36
はじめまして。
>なので、漢字コードがSJISになっております。
>
>LANG環境変数=ja_JP.PCK
>
>そこで、もちろんなんですが、EUC版もUTF-8版も下記エラーになってしまいます。
>どの様に対応したらよいのか教えて頂けないでしょうか?
crowbarやDiksamのソースコードで、SJIS版、EUC版、UTF-8版の違いは
以下の通りです。
(1)error_message.cの文字コードが違う。crowbar, Diksamともに、
エラーメッセージは日本語で出ますし、そのメッセージはerror_message.c内に
埋め込まれています。エラーメッセージも表示前にwchar_tに変換するのですが、
この変換でエラーになっているというのが現状です。
(2)(コンパイラの)Makefileの中に-DEUC_SOURCEとか-DSHIFT_JIS_SOURCEとかの
指定が入っている。SJISでは、「表」のように2バイト目に0x5Cを含む
文字が存在しうるので、いわゆる0x5C問題が起こります。これを回避する
コードが入っています。(-DEUC_SOURCEと-DUTF8_SOURCEの動きは同じです)
これを使用しているのはcrowbar.lまたはdiksam.lです。
(3)お使いのコンパイラがgccの場合は、gcc自体の0x5C問題に引っかかるので、
SJIS版(Windows版)のerror_message.cでは、随所に\が入っています。
Windows版のerror_message.cを使うか、gccのオプション指定をする必要が
あります。
というわけで、対策は以下のようになるかと思います。(試していません)
・error_message.cの文字コードをSJISにする。必要に応じて\を入れて
0x5C問題に対応するか、gccのオプションを指定する。
・Makefileの-DEUC_SOURCEとかになっているところを「-DSHIFT_JIS_SOURCE」に
変更する。
Windows版のソースを参考にされるとよいのではないかと。