トップページ⇒network
27コメント11KB

ブラウザがCGIに渡す文字コードを教えて

■ このスレッドは過去ログ倉庫に格納されています
0001名無しさんZ80NGNG
htmlの表示に左右されるのか、半角カナだとどうなるのか、
はたまた、IEの低いバージョンだとこんな渡し方をしてしまう
とか そのたもろもろ、、
解説してくれているページおしえてくれるだけでもたすかるな。
0002名無しさんNGNG
NTTに死んでほしい人、これに続けて票を入れてくれませんか?
どれくらいの人がNTTを嫌っているのか知りたいので。

まず自分..1票。
0003名無しさんNGNG
ゴメン、スレッド間違えた。
0004アウアウアーNGNG
アウアウアー
アウアウアー
アウアウアー
アウアウアー
アウアウアー
アウアウアー
アウアウアー
アウアウアー
アウアウアー
アウアウアー
アウアウアー
アウアウアー
アウアウアー
アウアウアー
アウアウアー
アウアウアー
アウアウアー
アウアウアー
アウアウアー
アウアウアー
アウアウアー
アウアウアー
アウアウアー
アウアウアー
アウアウアー
アウアウアー
アウアウアー
アウアウアー
アウアウアー
アウアウアー
アウアウアー
アウアウアー
アウアウアー
アウアウアー
アウアウアー
アウアウアー
アウアウアー
アウアウアー
アウアウアー
アウアウアー
アウアウアー
アウアウアー
アウアウアー
アウアウアー
アウアウアー
アウアウアー
アウアウアー
アウアウアー
アウアウアー
アウアウアー
アウアウアー
アウアウアー
アウアウアー
アウアウアー
アウアウアー
アウアウアー
アウアウアー
アウアウアー
アウアウアー
アウアウアー
アウアウアー
アウアウアー
アウアウアー
アウアウアー
0005名無しさん@そうだ選挙にいこうNGNG
ムリダヨー
0006名無しさん@そうだ選挙にいこうNGNG
なんで、こんなに低脳な輩ばかり・・・(悲

>>1
送信する文字コードは、おそらくブラウザが現在表示している文字コードに左右されると思います。
5年くらい前(当時は IEはまだ無かった)には Shift-JISのページにも EUCのデータが来ていましたが、
最近はそういうことはほとんど無いような気がする。
どのバージョンからはっきりそうなのかと聞かれるとよくわかりませんが。

あと半角カナについては、いちおう一般的な EUCにも対応する文字コードはあるようです。
確信は無いですが普通は 0x8E〜〜で来るのではないでしょうか?
正確には2バイト半角カナと3バイト半角カナという規格があって、
ブラウザ側の OSのインプリメントに左右されるのかもしれませんけれど・・・。
0007名無しさん@そうだ選挙にいこうNGNG
EUCとS-JISの1バイトカナコードが同じだから問題なんじゃないの?
0008投票マニアNGNG
CGIに渡すときに文字コードセットの指定できるよん
0009名無しさん@そうだ選挙にいこうNGNG
どうやるんですか?
0010名無しさん@そうだ選挙にいこうNGNG
>>6@`7
とりあえずちゃんとした資料でも読もうぜ。
http://hp.vector.co.jp/authors/VA001240/article/charcode.html

Shift_JIS のページのフォームでも、ISO-2022-JP とか EUC-JP で送ってくる
クライアントもあるさ。そもそも現在表示中のページの charset と同じ
エンコーディングで送るべし、って規格で決まってたりするの? (純粋な質問)
0011Be名無しさんNGNG
規格できまってはいないが、大半のブラウザは、
現在表示中のページの charset と同じ エンコーディングで
送ってくるだろっ??
送ってこないものの例をあげろよ
001210NGNG
>>11
具体的な UA の名前は知らない。でも、2ch でも化け化けの
発言をよく見かけるでしょ。適切に文字コードを変換してれば
そんなことはおこらんさ。
0013名無しさん@そうだ選挙にいこうNGNG
>11
日本語に対応してないブラウザ全部。
エディタから無理矢理EUCのテキストコピペしてカキコしたら
ちゃんと変換してくれるとこもあるし、化けるとこもある。
0014名無しさん@そうだ選挙にいこうNGNG
>>11
ネスケ4.xxならEUCのフォームに半角カナで書きこめば、S-JISで
返してくるじゃん。少しは実験でもしてみろよ。
同じキャラクタセットで返ってくりゃ、12の言うとおり、誰も
コード解析で苦労しないさ。
0015名無しさん@そうだ選挙にいこうNGNG
>13
おまえわかってないだろ。
君のあげた例はどちらも、ちゃんとどちらも、
「現在表示している文字コード」でブラウザが送信しているよ。
化けるか化けないかはサーバ側の問題。

>14
なるほど、、ネスケ4.xxはフォームのコードを自動判別して
送ってくるのね、
半角カナ混じりの場合、(統計的手法を使わずに)自動判別って
不可能だよね、 なんでんなクソな使用なんだろ。。


0016名無しさん@そうだ選挙にいこうNGNG
TURBO-LINUXについてたネスケから自作のcharset=shift_jisのCGIに送信したら
JISで送ってきたよ。
0017名無しさん@そうだ選挙にいこうNGNG
>自作のcharset=shift_jisのCGI
↑↑意味が分からん。
0018名無しさん@そうだ選挙にいこうNGNG
自作の、アクセスするとhttp-headerにcharset=shift_jisを流すCGIって事でしょう。
まさかmetaじゃ無いでしょうし。
001916NGNG
メタタグとして
<meta http-equiv="Content-Type" content="text/html; charset=shift_jis">
を出力して、その頁内にある入力フォームの書き込みボタンを押した際に
起動されるCGIという意味です。

すいません、↓はどういう意味ですか?
>自作の、アクセスするとhttp-headerにcharset=shift_jisを流すCGIって事でしょう。
>まさかmetaじゃ無いでしょうし。
002016NGNG
補足
『http-headerに流す』という意味がわからないんですけど・・・
CGI歴は3万STEP程度ですが。
0021無名NGNG
>20
CGIを呼ぶページのContent-typeをShift_JISにするとか。
002216NGNG
>CGIを呼ぶページのContent-typeをShift_JISにするとか。
でそれをやるのに、以下のようにmetaタグに書く以外の方法が
あるのなら知りたいんですけど。
printf ( "Content-type: text/html\n\n");
printf ( "<html>\n\n");
printf ( "<head>\n");
printf ( "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=shift_jis\">\n");
printf ( "<title>%s</title>\n"@` gTitle);
printf ( "</head>\n");
printf ( "<body ");
以下CGIを呼ぶフォームなどを出力。
0023名無しさん@1周年NGNG
適当な漢字をvalueに持つのをhiddenで送ってやって、
受け取ったCGIが、そのvalueから漢字コードを調べれば?
0024>16NGNG
コンテンツに日本語を含むなら、ブラウザがデータの並びを見れば
euc-jp/shift_jis/iso-2022-jp などの文字コードを特定できるはずでしょ?

charset はその特定を用意にするための付属情報に過ぎないのね。
本来は web サーバが
 Content-type: text/html; charset=Shift_JIS
としてクライアントに charset を知らせるべきなわけ。でもそれが
できない場合の代替手段が meta による charset 指定なのよ。
 <meta http-equiv="foo" content="bar">
ってのは HTTP のレスポンスヘッダに
 foo: bar
と書くのと同じ。もちろんそれを正しく解釈してくれるかどうかは
クライアント次第。

何万ステップ書くのもいいけど、いろんな規格を読むなどの
勉強もしような。CGI ってのはあくまでインタフェースなんだから。
0025名無しさんNGNG
<meta http-equiv="Content-Type" content="text/html; charset=shift_jis">
以外にも

CGIだったら
print "Content-Type: text/html;charset=shift_jis\n\n";

HTMLだったら
<a href="URI" charset="shift_jis">xxx</a>

<textarea rows=10 cols=76 lang="JA" accept-charset="shift_jis">

<form method="POST" action="URI" enctype="TEXT/PLAIN" lang="JA" accept-charset="shift_jis"> </form>

<form method="POST" action="URI" enctype="MULTIPART/FORM-DATA" lang="JA" accept-charset="shift_jis"> </form>

な感じで指定できるよん。
002625NGNG
あ、ごめん。最後変なところで改行されてる。。。
ついでだからもう一つ
.htaccessで
ADDType "text/html; charset="EUC-JP" html
なこともできるよ。
002716NGNG
う〜む、勉強になりました。有り難う御座います。
一度時間をとって、ちゃんと規格読まなきゃ駄目だな。
■ このスレッドは過去ログ倉庫に格納されています