[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[debian-users:18251] Re: How to JAPANESE programming with curses



久保田です。

> 長友です。

> 何も考えずに、
> printf("%s\n","こんにちは、世界!");
> みたいに書いたら、gccでコンパイルするとparse errorがでます。多
> バイト文字を内部で勘違いしているようです。文字を上手く選ぶとコ
> ンパイルが通り、表示もうまく行きます。
> gccって、日本語を通すのに何か設定が必要なのでしょうか。

日本語コードとして、EUC を使ってください。
たぶん、JIS (ISO-2022-JP) を使われたのでしょう。
JIS コードでは、「、」の2バイト目が " の ASCII コードと
一致するので、それでエラーになったのだと思います。

UNIX でプログラミングするとき、日本語コードは EUC がいちばん
問題が起こりにくい、というのは半ば常識となっています。
その理由は、
・日本語コードが ASCII と衝突しない
・ASCII と JIS X 0208 (いわゆる JIS 第一水準と第二水準) の
  文字を使っている限り、バイト数とカラム数が一致する
  (JIS X 0201 カナ [いわゆる半角カナ] や JIS X 0212 [いわゆる
  補助漢字] を使いだすと、この仮定は崩れるのですが。)
ということです。

エディタは何をお使いでしょうか。デフォルトで EUC になるように
設定しておくのがいいと思います。

# emacs の場合は、手前味噌ですが、user-ja をインストールして
# 試してみてください。インストールして、ふだん使っているアカウントで
# user-ja-conf を実行して、それから .emacs の内容を確認してください。

> それと、日本語の通るcursesってdeabinにはないのでしょうか?
> #pcursesというのが存在はするみたいですが、RPMでした。

少しだけ試したことがありますが、どうやら、8ビットクリーンには
なっているみたいですので、JIS (ISO-2022-JP) でなければ動くのでは
ないでしょうか。ただし、日本語コードを意識しないので、高度な処理
(ってなに?私も ncurses ってよくしらないから) は無理かもしれません。
いちおう、EUC を使って表示はできます。SHIFT-JIS でも動くかも。
(もちろん、コンソールが EUC or SHIFT-JIS を認識する必要がありますが、
これは ncurses プログラムに限らない話ですね。)

/***********************************************************
 * 久保田智広  Tomohiro KUBOTA
 * tkubota@xxxxxxxxxxx / kubota@debian.or.jp
 ***********************************************************/