CGI-BBS > 基礎 > jcode/jcode.pl > 日本語変換が出来ません


カレッヂ
カレッヂ


質問者 にゃあ  投稿日 3/9(金) 18:13:49
初めまして。初心者なので質問の仕方も下手だと思います。

htmlのフォームに入力したデータをcgiで受け取り、htmlで表示させたいのですが、
日本語がきちんと表示されません。英数字は表示できます。
jcode.plはサーバにおいてありますし、色々試して見ましたが、ぜんぜん原因がわかりません。

http://www.sos.or.jp/rensyu2.html で実際に見ていただけます。
どなたかご教授ください。お願いいたします。
回答者 しあわせのツボ  [削除]  投稿日 3/9(金) 20:45:46
ダブルバイト文字はURLエンコードされて送られます。それをデコードしていないようですね。
たとえば$dataに入っている内容をデコードするには、jcode::convertをかける前に
$data =~ s/%([a-fA-F\d]{2})/pack("C", hex($1))/eg;
とします。
質問者 にゃあ  [削除]  投稿日 3/12(月) 09:39:51
ありがとうございました。早速そのようにしてみたところ
日本語での表示がうまくいきました!!

入力データ解析ルーチンで

foreach (@query) {
($key, $val) = split(/=/);
$key =~ s/%([A-Fa-f0-9] [A-Fa-f0-9])/pack("c", hex($1))/ge;
$val =~ s/%([A-Fa-f0-9] [A-Fa-f0-9])/pack("c", hex($1))/ge;

としていますが、それとは
$name1 =~s/%([a-fA-F\d]{2})/pack("C",hex($1))/eg;は別物なのですね。
色々なサンプルを見ていたのですが、上記のような処理は見かけなかったような気がします。
まだまだ勉強しなければいけないと痛感しています。本当にありがとうございました。
回答者 しあわせのツボ  [削除]  投稿日 3/12(月) 12:55:04
記述が違うだけで処理は同じなのですが、pack("C",の所が小文字cになっているようですね。
大文字か小文字かによって処理が異なるので、確認して下さい。

返信(回答)する


Web裏技