Cygwin なんでも掲示板

一覧最新記事過去一覧 | 検索FAQアンテナHOME
(新規投稿・発言はできません)


スレッド

└◇3253:
GCCのエスケープシーケンス [戸豚] 11/25 13:14

 ├◇3254:Re:GCCのエスケープシーケンス [zxcv] 11/28
 ├◇3255:Re:GCCのエスケープシーケンス [mari] 11/30
 └◇3256:Re:GCCのエスケープシーケンス [戸豚] 11/30 <


3253● GCCのエスケープシーケンス[ 戸豚 ] 2006 11/25 13:14
「例題で学ぶLinuxプログラミング」という本の例題をCYGWINでコンパイルしようとしました。

puts("USAGE: Prog <ソケット名>");

というような”ソ”など2文字目が0x5Cの文字で、

unknown escape sequence: '\203'

という警告が出ます。
そのまま走らせると "USAGE: Prog <ャPット名>"のように表示されてしまいます。

わざわさ "ソ\ケット名" のように \ を書き込む手間は取りたくありません。
文字コードを指定する方法はmanコマンドやinfoコマンドを見てもわかりませんでした。
GCCでシフトJISの文字列を正しく認識させることはできないんでしょうか。


CYGWINの日本語化として

1。CYGWIN-JEからnkfをダウンロード、解凍したイメージを /usr/bin にエクスプローラーでコピー。
2.moconv.shを使ってgettextのデータを日本語化。

をしています。

.bash_profileには以下の設定をしています。

export TZ=JST-09
export LANG=ja_JP.SJIS
export LESSCHARSET=dos
スレッド一覧


3254● Re:GCCのエスケープシーケンス[ zxcv ] 2006 11/28 23:55
反応が無い様なのでコメントさせて頂きます。 Cygwin の日本語対応の状況には私も疎いので、雑談としてお読み頂ければ幸いです。

> export LANG=ja_JP.SJIS

これは UNIX的には正しいと思いますが、数年前に調べた時には Cygwin はこれを ja_JP.eucJP とみなすという結論に至りました。

以来、私は SJIS を見捨てて EUC-JP か UTF-8 を使用しています。 これらだと、コメントや文字列定数中の日本語文字に正常動作を妨害されないはずです。

あるいは、 <http://www.eva.hi-ho.ne.jp/cgi-bin/user/zxcv/exsjis2.cgi> が参考になるかも知れません。

# コンパイラ側から見ると、SJIS対応は EUC-JP対応や UTF-8対応より大変なんですよ。
スレッド一覧


3255● Re:GCCのエスケープシーケンス[ mari ] 2006 11/30 00:14
昔のGCCでは環境変数LANGにC-SJISを設定すればできました(GCCのビルド時にオプション指定が必要)が、Ver.3.4辺りから変更になっているようです。今のSetupでインストールされるGCCは3.4.4ですので変更後の方法でできます。

その方法ですが、コンパイルオプションに

-finput-charset=cp932 -fexec-charset=cp932

を追加してみてください。これで期待通りになると思います。もしエラーになったらlibiconvをインストールしているかチェックしてみてください。

#cp932はWindowsでのShiftJISです。詳しくは“コードページ”でググってみてください。
スレッド一覧


3256● Re:GCCのエスケープシーケンス[ 戸豚 ] 2006 11/30 07:40
mariさん、ありがとうございます。
ちゃんとコンパイルできました。
これで一歩前に進めます。

zxcvさん
わたしは日本語化は3253で書いたように「環境変数設定して、nfk入れてmoconv.sh」だけしています。
11月24日の夜にftp.u-aizu.ac.jpから落としてきた環境で、それだけでXウィンドウ使わないならシフトJISで使えます。
まだXウィンドウを使ってないので日本語化はやってませんけどIMEプロキシーとか試そうと思ってますが、まずはソケットプログラミングを先に・・・。
日本語化はまだまだ先です。
スレッド一覧

早田のホームページへ
CGIROOM