文字コードの処理

[上に] [前に] [次に]
初心者 2000/02/28(月) 10:30:41
はじめまして。
これからCGIを作ってみようと思ってる
初心者以前のやつです。

作る前に悩んでしまって質問なんですが・・・
文字コードの処理はどうすればよいのでしょうか?
PerlだとJcode.plなる物があるのはわかりましたが(使い方も)
C言語だとどうすればよいのでしょうか?
ここの過去ログや他のサイトも調べましたが具体的に使われてる例
が無くC++で書かれたサンプルなどしか見つかりませんでした。

具体的な使い方があるサイトをご存知の方いらっしゃいましたら
よろしくお願いします。

やはりPerl使ったほうがいいんでしょうかねえ?
Cで書くのでは無くC++使ったほうがいいとか?
私あまりC++詳しく無いんでできればPerlやCにしたいと思ってるのです

まだなにも作っていないうちから色々悩んでしまって・・・

ラウォッチ 2000/02/28(月) 13:40:45
>やはりPerl使ったほうがいいんでしょうかねえ?
賛成!
プロバイダでCGIをやるなら、やはりパールでしょう!

ちなみに、Cでの漢字コード変換は自力です。(私の場合は...)

三原克大 [E-Mail] 2000/02/28(月) 13:48:29
茶々を一つ

Java (JavaScript ではなくて, Sun が開発した方の) だと
Unicode を中間表現にして自由自在に変換できますが、
Servlet なんて動かしてもらえるプロパイダはまずありません。
# Servlet は、サーバの上で動かせるように作った Java アプリ
# 自分で Jigsaw http://www.w3.org/Jigsaw/ を立ち上げるしか…

たれ 2000/02/28(月) 15:13:29
Cでしたら、
http://www.hyuki.com/cmcgi/

から、文字コードの変換ができるソースを
いただけます。第4回くらいからついてるはずです。

**Perlの味をしめちゃっていらいCで組む気がしなくなりました、
 わたしの場合は(^^;アバウトな書き方でもスイスイ通っちゃうん
 ですから、楽なことこの上ないです、はい。

ぽすとぐれ 2000/02/28(月) 20:38:58
僕は Web アプリケーション作るなら PHP が良いと思います。
文字コード変換ですが、

$message = "こんにちはーさよおならー四六死苦";
$fp = popen("/usr/local/bin/nkf -e > hoge.txt", "w");
fwrite($fp, $message);
pclose($fp);

これじゃヤバいっすかね…
どんなもんでしょ

S-pore [HomePage] 2000/02/28(月) 22:40:47
ぽすとぐれさんがおっしゃるようにnkfにパイプしてもいいですし,
外部プログラムを呼び出すと遅くならないかということが心配なら,
nkfのソースを拝借して,自分のプログラムから関数として
直接呼び出せるように改造してもいいと思います。
私も,専用サーバーに移転してから初めてサーバー負荷のことを考えるようになり(をい),
掲示板やチャットなどをC言語化したのですが,
そのとき最初に用いていたのが後者の方法です。(サブルーチン化)
そして,一時はそれでうまくいったと思っていたのですが,
まれに,ある条件で特定の漢字がくると文字化けするという不具合が発生し,
原因がよくわからなかったので,それからは文字コードについての処理はしないことにしました。
それから半年ほど自分のサイトで使っていますが,あまり問題はないようです。
あえて言えば,ヘッダで charset=Shift_JIS を強制的に指定しているのでネスケ2では使えないのと,
ネスケ3(4もかも)でcharset指定されたページをみると
たまに,なぜか読み込み途中でリロードしだすという極めて謎な現象が起こることがあったり・・・。(本当に謎。)
その程度で,化けた文字がファイルに書き込まれるということはとりあえず起こっていません。
日本語が使われていないページに入力フォームを置くのなら話は別ですが,
そうではなく,ごく普通の日本語掲示板のようなCGIなら
文字コード変換はfailsafe的な意味しか持たないと個人的には思っています。
それなら,せっかくC言語で書くんだから不要な処理を省いておもいっきり軽くしたいでしょ。
・・・とかあまりいい加減なことを書くとおしかりをうけそうですが・・・。(^^;
もちろん,偉人様がたが公開CGIスクリプトで当然のようにjcode.plを使っているところをみると,
やはりちゃんと文字コード変換処理をしたほうがいいのかも,とは思いますが。

あと,CGIスクリプトに使う言語についてですが,
C言語はあまりオススメできません。(^^;
Perlで組むときでさえ,最初はCGIの仕組みの習得で大変なのに,
C言語でやると,それに加えてフォームデコードやsplitやreplaceといった
関数を自作する必要がでてくると思うので。
こういうCGI用の関数ライブラリがどこかにないかなとちょっと探してみたことは
あったのですが,当時はライブラリどころかC言語CGIについてのサイトも
ほとんど見つからず,結局全部自作するハメに・・・。
(ちゃんと探せばどこかにあると思いますが^^;)

なんか1年前の自分を見ているようで燃えてしまいました。長くてすみません。
それではがんばってください。

無責任官庁 2000/02/29(火) 08:30:59
あんまし関係ないトコかもしれないけど一つ。
C++で作ったのはCで動かないけど、
Cで作ったのはC++でコンパイルOKですよ。
(混じってもOK)
だから、関数とかライブラリとかC++のをいただいて、
自分はCでプログラミングして、C++でコンパイル…は、
私がよくやる手です(笑)

#オブジェクト指向にする意味がいまいち無いのと、
#余計わかりづらくなっちゃうから…ちょっといんちき。

まあ、中途半端にあれこれ手を出すよりは、
CがOKならCで通すのも一つの手ですよ。
なんでもいいからどれか一つの言語を極めるって、とっても大事です。

初心者 2000/03/01(水) 00:38:35
[[解決]]
ラウォッチさん
 自分としてはC言語だったら多少できるんでCがいいな
ぁなんて思ってたんですが、どうやらPerlの存在のほうネット上では
強そうですね。


三原克大さん
 私JavaはApplet作って遊んだ事しか
無いんで(笑) でもServletもCGIの次に勉強してみたいです。


たれさん 
情報ありがとうございます。大変参考になるサイトです
文字コードの処理についてもあれ使わせてもらうことにします。


ぽすとぐれさん
 PHPですか名前は聞いたことあるんですが、よくは知りません
WEBアプリケーションに優れているのかぁ・・・
なんにせよPHP自体まったくわからないんで、1度C、Perlで書いてみて
から勉強させていただきます。
 nkfにパイプを通すやりかた
調べてみました。ちょっと初心者の私には理解するまでに時間かかり
そうなんですが 自分の知識のためにこの方法でも挑戦してみます。 


S-poreさん
熱い回答ありがとうございます。 自分はCなら多少の知識があるん
ですが。どうやらPerlのほうが情報量がすさまじく多いんですねぇ
どうも私完璧主義なんで不安な要素って残したがらないんですよねぇ
(実力あまり無いのに(笑))
確かにC言語CGIのサイトって全然無いですね かなり調べたんだが・・
いつの日か、自分がCサイト作ってやるーぐらいの勢いで頑張って
みます。励ましありがとうございます。


無責任官庁 さん
C++・・・ん〜 私C++見てもまだわからない構文が多過ぎて・・笑
やはりまだまだ勉強足りませんわ私

結論として C、Perl でとりあえずなにか作ってみて
判断してみようと思います。まだなにも作ってないうちから
色々悩んでしまってもしょうがないですしね♪
 皆さんから頂いた回答ほんと参考になりました。
勇気をもってかきこんで見たかいがありました(大げさ?)
本当にありがとうございました。

[上に] [前に] [次に]